我正在关注rails指南中的官方starter guide。这是一个很棒的教程,但我对如何处理文章视图中的注释表单的表单错误显示有疑问。
<%= 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的外部视图中提交后显示表单错误的最佳过程是什么?
另外,作为旁注。不同视图和控制器之间的表单工作流程是什么?
提前致谢。
答案 0 :(得分: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将再次呈现新的&#39;模板。这次错误将传递给您的视图。因此,您应该在errors
对象的视图验证中添加并迭代它们(它的字符串数组),以便在出现错误消息时显示所有消息。