Rails 4.2 在控制器默认视图之外形成错误处理



我正在遵循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对象添加视图验证并迭代它们(它是字符串数组)以显示所有消息,以防出现错误消息。

最新更新