无法显示对 Post 的评论

Unable To Displaying Comments On A Post

我正在向 post 添加评论,这保存得很好,但我一直在努力让它们在 post 上显示多个评论。当我保存时,它只显示第一个评论 posted。

评论管理员:

class CommentsController < ApplicationController

  def create
    @micropost = Micropost.find_by(id: params[:micropost_id])
    @comment = 
@micropost.comments.create(params[:comment].permit(:body))
    if @comment.save
      flash[:success] = "Comment Posted"
    end
    redirect_to current_user
  end

end

def show
  @comment = Comment.find_by(id: params[:id])
end

结束

在我看来:

  <%= @comments.body %>

我可以显示一条评论,但是当我写另一条时,第一条只显示。我试图在视图中使用 do 循环遍历它们,但随后收到一条错误消息 undefined method .each for "text from comment":String

也许我的节目@comment 需要改进,或者我必须在视图中做些什么才能让它们全部显示出来。同样的 do 循环适用于 posts,但我似乎可以让它为评论工作。

我还有一个小问题,就是没有保存任何评论,我根本无法查看 post,因为没有正文存在。我想我将不得不写一些 if/else 来声明如果没有主体,无论如何显示。

在您的帖子控制器的显示方法中,您应该获取评论,然后您可以在 html 页面中显示它。

例如,

def show
 @post = Post.includes(:comments).find(params[:id])
end

并且在您的视图文件中,您可以像下面这样遍历评论,

@post.comments.each do |comment|
# you logic here
end

您正在做的是获取单个评论并尝试遍历该对象,这是不可能的。

你想要做的是显示在 'Micropost' 上发布的所有评论,所以你需要做的只是在参数和用户中传递 micropost_id,如下面的查询

@comments = Comment.where(micropost_id: params[:micropost_id])  

然后您可以在 .erb 模板中遍历该对象

<% @comments.each do|comment| %>
  <%= comment.body %>
<% end %>