rails空白条目始终附加到集合的末尾

时间:2014-12-17 07:26:54

标签: ruby-on-rails loops collections append

我遇到的问题是,我的收藏中总会添加一个额外的空白,因此看起来有人留下了空白的评论。我发现如果我把评论回复放在评论表之前,我就没有这个问题。 :

物品\ show.html.erb

<p>
  <h2><%= @article.title %></h2>
</p>

<p>
  <%= @article.desc %>
</p>

<h4>Add a comment</h4>
<%= form_for([@article, @article.comments.build]) do |f| %>
  <p>
    <%= f.label :commenter %><br>
    <%= f.text_field :commenter %>
  </p>
  <p>
    <%= f.label :body %><br>
    <%= f.text_area :body %>
  </p>
  <p>
    <%= f.submit %>
  </p>
<% end %>

<%= @article.comments.count %> (shows 0)

<h2>Comments</h2>
<% @article.comments.each do |comment| %>
    <% next if comment.blank? %>
  <p>
    <strong>Commenter:</strong>
    <%= comment.body %>
  </p>
 <% end %>

结果总是如此(即使没有发表评论):

评论者:

评论控制器

...
def create
    @article = article.find(params[:article_id])
    @comment = @article.comment.create(comment_params)
    redirect_to question_path(@article)
end
...

文章控制者'show'

  def show
    @article = Article.find(params[:id])
  end

为什么在我将表单放在评论之前总是呈现一个空白的“评论者:”?

1 个答案:

答案 0 :(得分:1)

由于您在列出评论之前致电@article.comments.build,因此会创建&#39;空白&#39; 评论。但是此评论不是空白对象,因此comment.blank?不起作用。你可以修改你的条件来解决这个问题:

更改

<% next if comment.blank? %>

<% next if comment.persisted? %>