Ruby on rails Rails 4.每个都打印一个额外的空结果

Ruby on rails Rails 4.每个都打印一个额外的空结果,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个链接的评论表,表单如下所示: <%= form_for([@link, @link.item_comments.build]) do |f| %> <%= f.hidden_field :user_id, value: current_user.id %> <%= f.text_area :content %> <%= f.submit "Submit" %> <% end %> 我正在使用以下内容将评论打印到

我有一个链接的评论表,表单如下所示:

<%= form_for([@link, @link.item_comments.build]) do |f| %>
  <%= f.hidden_field :user_id, value: current_user.id %>
  <%= f.text_area :content %>
  <%= f.submit "Submit" %>
<% end %>

我正在使用以下内容将评论打印到页面:

<ul>
    <% @link.item_comments.each do |comment| %>
      <li><%= comment.content %> <%= comment.user_name %></li>
      Points: <%= comment.points %>
    <% end %>
  </ul>
  • 要点:
但是当我查看页面时,我会在最后打印出一个额外的空元素。有人能解释发生了什么事吗?我认为这可能与表单中的
.build
有关,但我找不到任何相关信息


干杯

你是正确的,原因是
.build

从:

collection.build(attributes={},…)返回集合类型的一个或多个新对象,这些对象已使用属性实例化并通过外键链接到此对象,但尚未保存


但是,即使它尚未保存,它也会被添加到
@link.item_comments
集合中,该集合将用于
每个
循环


从代码的其余部分来看,无论如何保存注释时,您都必须将注释与链接相关联,并且您可以只使用([@link,ItemComment.new])的
表单(

)的
表单“,”即使尚未保存注释,也会添加它,使其显示为…”是的。在我的例子中,实际解决这个问题的方法只是将表单放在视图中循环的上方。谢谢