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