【发布时间】:2019-12-07 17:11:30
【问题描述】:
我正在将 cmets 添加到可以保存的帖子中,但我一直在努力让它们在帖子上显示多个 cmets。当我保存它时,它只显示发布的第一条评论。
评论控制器:
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 循环适用于帖子,但我似乎可以让它适用于 cmets。
当没有保存 cmets 时,我还有另一个小问题,我根本无法查看帖子,因为没有正文存在。我想我必须写一些 if/else 来说明如果没有正文,无论如何都要显示。
【问题讨论】:
-
您在哪里展示您的 cmets?在帖子详细信息页面中?
-
尝试循环视图中的 cmets 时遇到的错误是因为
.each在字符串上不可用,而仅在数组和哈希上可用。如果您正在执行@comments.body.each,那将不起作用,因为我假设正文是一个字符串。你可以试试@comments.each。但我不确定@comments是在哪里定义的,是不是应该是@commment? -
@KrupaSuthar 我在展后页面上显示 cmets。
-
@codeinaire 对循环字符串很有意义。抱歉,应该是视图中的@comment。我是否需要将所有字符串(即 cmets)转换为数组,然后对其进行迭代?
标签: ruby-on-rails ruby comments