我正在遵循rails指南中的官方入门指南。这是一个很好的教程,但我对如何处理文章视图中评论表单显示的表单错误有疑问。
<%= 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 的外部视图中提交后显示表单错误的最佳过程是什么?
另外,作为旁注。不同视图和控制器之间的表单工作流是什么?
提前谢谢。
在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
对象添加视图验证并迭代它们(它是字符串数组)以显示所有消息,以防出现错误消息。