我正在我的评论模型下循环显示所有帖子评论
%h2 Comments
- @post.comments.each do |comment|
%p
%strong Comment:
= comment.text
= link_to 'Destroy Comment', [comment.post, comment],
method: :delete,
data: { confirm: 'Are you sure?' }
如您所见,有一个空白对象,如果我转到rails控制台并检查发布的所有评论,它会告诉我它只有两个评论“ Comment 1”和“ comment2” 有什么想法为什么要实例化一个nil对象并将其显示为存在? 这是我的评论控制器创建动作
def create
@post = Post.find_by slug: params[:post_slug]
@comment = @post.comments.create(comment_params)
@comment.user_id = current_user.id
if @comment.save
redirect_to post_path(@post)
else
flash.now[:danger] = 'Error'
end
end
如果该帖子没有评论,则不会显示任何零评论,如果我在该帖子中有评论,就会发生这种情况 显示PostController的动作
def show
@post = Post.find_by slug: params[:slug]
redirect_to posts_path unless @post.present?
@post.update_visit_count if @post.present?
end
答案 0 :(得分:0)
我认为您错过了要点,每个帖子都有评论,因此首先要嵌套每个循环,例如
@posts.each do |post|
post.each do |comment|
....
end
end
答案 1 :(得分:0)
它看起来像模板问题。在HAML中,缩进很重要。循环内容应比循环命令多缩进2个空格。但是在您看来,%p
行相对于前一行偏移了4个字符,而不是应该偏移的2个字符。
您可以用以下代码替换该模板代码吗?
%h2 Comments
- @post.comments.each do |comment|
%p
%strong Comment:
= comment.text
= link_to 'Destroy Comment', [comment.post, comment], method: :delete, data: { confirm: 'Are you sure?' }
然后重试?