Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 评论验证错误未显示在posts视图中_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 评论验证错误未显示在posts视图中

Ruby on rails 评论验证错误未显示在posts视图中,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Ruby On Rails 3.2,我正在使用基本博客引擎,我已经对评论应用了验证,但当我提交时,它不会显示错误,而是显示ActiveRecord::RecordInvalid by rails,这是默认设置 我的评论是 def create @post = Post.find(params[:post_id]) @comment = @post.comments.create!(params[:comment]) redirect_to @post end 我的帖子/节目视图如下,可以很好地进行评论 <%= form_

我正在使用基本博客引擎,我已经对评论应用了验证,但当我提交时,它不会显示错误,而是显示ActiveRecord::RecordInvalid by rails,这是默认设置

我的评论是

def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create!(params[:comment])
redirect_to @post
end
我的帖子/节目视图如下,可以很好地进行评论

 <%= form_for [@post, Comment.new] do |f| %>
<p class="comment-notes">Your email address will not be published. Required fields are marked <span class="required">*</span></p>
<p>
<b><%= f.label :name, "Name *   " %></b><%= f.text_field :name %><br /></p>
<p>
<b><%= f.label :body, "Comment" %></b><%= f.text_area :comment, :cols => 60, :rows => 5 %>
</p>
<p>
  <%= f.submit "Post Comment" %>
</p>

您的电子邮件地址将不会发布。已标记必填字段*


60,:行=>5%>

有人能帮我在相同的帖子/显示视图上显示验证错误吗

提前感谢

更换

@comment = @post.comments.create!(params[:comment])
redirect_to @post

与创建不同,创建将引发错误

在帖子/节目中

<%= form_for [@post, Comment.new] do |f| %>
  <% if @comment && @comment.errors.any? %>
    <% @comment.errors.full_messages.each do |msg| %>
     <li><%= msg %></li>
    <% end %>
  <% end %>
   ...

  • ...
    试试这个:

     def create
       @post = Post.find(params[:post_id])
       @comment = @post.comments.new(params[:comment])
       if @post.save
         redirect_to @post
       else
         flash[:error] = "Correct errors"
       end
     end
    
    在Post模型中:

    accepts_nested_attributes_for :comments
    
     or
    
    如果不希望将其作为嵌套模型,请执行以下操作:

    def create
       @post = Post.find(params[:post_id])
       @comment = @post.comments.new(params[:comment])
       if @comment.save
         redirect_to @post
       else
         flash[:error] = "Correct errors"
       end
    end
    

    好的,它停止通过create方法引发错误,但仍然没有显示验证错误我也有同样的问题,我的代码看起来和你的一样,但是当我提交空表单时,更好的错误抛出错误,请看我这里的主题,伙计,我知道已经有一段时间了,但是你救了我的命。我无法解决验证有效的问题,但没有将错误传递回post页面。我要为你的健康干杯。由于某些原因,使用.save无效,必须使用create。这里是5号轨道
    def create
       @post = Post.find(params[:post_id])
       @comment = @post.comments.new(params[:comment])
       if @comment.save
         redirect_to @post
       else
         flash[:error] = "Correct errors"
       end
    end