评论表不起作用? (Ruby on Rails)未定义的方法`comments'为nil:NilClass

时间:2015-06-07 18:18:27

标签: ruby-on-rails forms methods comments

你好,善良的灵魂。

当我尝试提交新评论时,我收到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

我需要在哪里修正此错误?谢谢!

1 个答案:

答案 0 :(得分:1)

那么,您在哪里定义了值@user?正如我所看到的那样,在Ruby中,如果你在定义它们之前使用实例变量,它们只会给你nil对象作为回报。最后,您在comments对象上调用关联方法nil。这就是你获得例外的原因。

因此,首先将@user设置为User个实例,然后在其上调用comments