无法显示对 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 %>
我正在向 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 %>