我已经开始使用"入门指南"来自ruby on rails网站。一切正常,但当我改变显示所有评论的顺序而以相反的方式显示评论表单时,比form_for
函数添加一个空的注释模型到@post.comments
,所以,我在循环中显示一个空注释。
以下是观点:
<h1><%= @post.name %></h1>
<p><%= @post.text %></p>
<h2>Add comment</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
<p>
<%= f.label :name %><br>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :email %><br>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_area :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
<h2>Comments</h2>
<%= render @post.comments %>
循环显示两条注释。一个,存在于db和one中,只有空属性。如果我删除表单,则所有表单都显示正确。
答案 0 :(得分:1)
您只能选择持久评论:
<%= render @post.comments.select(&:persisted?) %>
答案 1 :(得分:1)
当您对某些帖子进行post.comments.build时,它会被添加到post.comments集合中,并会与其他评论一起显示。
您始终可以使用持久性来检查对象是否存在于数据库中,这意味着为其分配了ID。
@post.comments.select(&:persisted?)
注意:.present?检查donot在这里工作所以你必须使用.persisted。? 目前的支票只与父母有关。