繁体   English   中英

Ruby on Rails 3“ .each do”

[英]Ruby on Rails 3 “.each do”

我正在列出博客文章的评论。 例如,我对一篇博客文章有4条评论。 如果我在视图中打印“ @ comments.count”,它将正确返回4。 但是,如果我执行“ @ comments.each做| comment |”,它将在最后返回我那4条评论和一条空白评论。 因此,它总是返回我一个空白的评论。

调节器

def show
  @post = BlogPost.find params[:id]
  @blog_comment = @post.blog_comments.new
  @comments = @post.blog_comments
  @categories = BlogCategory.where(locale: I18n.locale)
end

视图

<ul>
  <% @comments.each do |comment| %>
    <li><%= comment.body %></li>    
  <% end %>
</ul>

问这些问题我很傻,但是我找不到解决办法。

在您的表演动作中,更改第2行和第3行的顺序。

您要在第2行中创建一个新的(空白)博客评论,然后在第3行中创建一个博客评论数组(包括空的博客评论)。

知更鸟

罗宾是正确的,您创建了一个空的注释,该注释是列表的一部分。 “ comments.count”仍然报告4,因为它触发了一个不包含新(未保存)注释的SQL计数查询。 解决此问题的最简单方法可能是实例化表单的新注释,而不将其作为关联的一部分:

@blog_comment = BlogComment.new( blog_post_id: @post.id)

另一种方法是使用“ new_record?”过滤掉新评论。 评论方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM