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

时间:2015-04-12 09:52:57

标签: ruby-on-rails ruby ruby-on-rails-4

我正在关注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的外部视图中提交后显示表单错误的最佳过程是什么?

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

提前致谢。

1 个答案:

答案 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对象的视图验证中添加并迭代它们(它的字符串数组),以便在出现错误消息时显示所有消息。