2015-04-12 46 views
1

我正在从轨道指南官方starter guide。这是一个很好的教程,但我对如何处理文章视图中的评论表单的表单错误显示有疑问。Rails 4.2窗体错误处理外部控制器默认视图

<%= form_for([@article, @article.comments.build]) do |f| %> 
<p> 
    <%= f.label :commenter %><br> 
    <%= f.text_field :commenter %> 
</p> 
<p> 
    <%= f.label :body %><br> 
    <%= f.text_area :body %> 
</p> 
<p> 
    <%= f.submit %> 
</p> 

我不知道这是不是这么简单的东西一看就知道导游不要理会它来解释或者是更复杂的东西,它看起来像。

在rails 4.2的外部视图中提交后显示表单错误的最佳过程是什么?

此外,作为旁注。不同视图和控制器之间的表单工作流程是什么?

在此先感谢。

回答

1

在你create动作,你可以这样做:

def create 
    @article = Article.find(params[:article_id]) 
    @comment = @article.comments.build(params[:comment]) 
    @comment.user = current_user 
    if @comment.save 
    redirect_to article_path(@article) 
    else 
    render 'new', locals: { errors: @comment.errors.full_messages } 
    end 
end 

的想法是,在你的create行动试图保存一个新的记录。如果一切正常,用户将被重定向到文章的#show操作。否则,Rails将再次渲染'新'模板。这次错误将传递给您的观点。因此,您应该添加对象errors的视图验证并遍历它们(它是字符串数组),以便在出现错误消息的情况下显示所有消息。

+0

我的问题是关于如何显示文章的显示视图内的评论错误。你有什么想法如何做到这一点?我只是不想在错误发生时渲染新的评论。 – wandarkaf