我遇到的问题是,我的收藏中总会添加一个额外的空白,因此看起来有人留下了空白的评论。我发现如果我把评论回复放在评论表之前,我就没有这个问题。 :
物品\ 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
为什么在我将表单放在评论之前总是呈现一个空白的“评论者:”?
答案 0 :(得分:1)
由于您在列出评论之前致电@article.comments.build
,因此会创建&#39;空白&#39; 评论。但是此评论不是空白对象,因此comment.blank?
不起作用。你可以修改你的条件来解决这个问题:
更改
<% next if comment.blank? %>
要
<% next if comment.persisted? %>