Rails form_for添加了空模型

时间:2015-07-12 17:09:29

标签: ruby-on-rails ruby forms

我已经开始使用"入门指南"来自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中,只有空属性。如果我删除表单,则所有表单都显示正确。

2 个答案:

答案 0 :(得分:1)

您只能选择持久评论:

<%= render @post.comments.select(&:persisted?) %>

答案 1 :(得分:1)

当您对某些帖子进行post.comments.build时,它会被添加到post.comments集合中,并会与其他评论一起显示。

您始终可以使用持久性来检查对象是否存在于数据库中,这意味着为其分配了ID。

 @post.comments.select(&:persisted?)

注意:.present?检查donot在这里工作所以你必须使用.persisted。? 目前的支票只与父母有关。