Ruby on rails 评论验证错误未显示在posts视图中
我正在使用基本博客引擎,我已经对评论应用了验证,但当我提交时,它不会显示错误,而是显示ActiveRecord::RecordInvalid by rails,这是默认设置 我的评论是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_
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
与
与创建不同,创建如果验证失败,strong>将引发错误
在帖子/节目中
<%= 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