你好,善良的灵魂。
当我尝试提交新评论时,我收到nil:'NilClass'错误的'未定义方法`注释'。 它突出显示了用户控制器的这一部分:
def create
@comment = @user.comments.build(comment_params)
@comment.user = current_user
我的评论控制器:
class CommentsController < ApplicationController
def show
@comment = Comment.find(params[:id])
end
def create
@comment = @user.comments.build(comment_params)
@comment.user = current_user
if @comment.save
redirect_to users_show_path, notice: 'Comment submitted!'
else
render 'users/show'
end
end
def destroy
@comment = Comment.find(params[:id])
@comment.destroy
end
def destroy
@comment = Comment.find(params[:id])
@comment.destroy
end
private
def comment_params
params.require(:comment).permit(:comment, :username)
end
end
我的用户模型包含has_many:comments,我的评论模型包含belongs_to:user
我需要在哪里修正此错误?谢谢!
答案 0 :(得分:1)
那么,您在哪里定义了值@user
?正如我所看到的那样,在Ruby中,如果你在定义它们之前使用实例变量,它们只会给你nil
对象作为回报。最后,您在comments
对象上调用关联方法nil
。这就是你获得例外的原因。
因此,首先将@user
设置为User
个实例,然后在其上调用comments
。