2015-06-07 54 views
0

你好幫助善良的靈魂。評論表不起作用? (Ruby on Rails)未定義的方法`評論'爲零:NilClass

當我嘗試提交新評論時,我得到'未定義的方法'註釋'for 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:意見和我的意見模型belongs_to的:用戶

我在哪裏需要注意糾正這個錯誤?謝謝!

+0

有點搜索會走很長的路.. – user2864740

回答

1

那麼,你已經定義了值@user?因爲我看到你沒有,在Ruby中,如果在定義它們之前使用實例變量,它們將簡單地給你nil對象作爲回報。最後,您正在調用nil對象上的關聯方法comments。這就是你得到的例外。

因此,將@user設置爲User實例,然後調用comments就可以了。

+0

是不是@user在用戶控制器中定義?我會在哪裏放?我是新來的這個:x謝謝你回覆那種 – icecreamrabbit

+0

@icecreamrabbit Humm。你可以把它放在你使用它的方法裏面。但是有幾種方法可以做到這一點。 –

+0

@icecreamrabbit快速瀏覽一下 - [Rails入門](http://guides.rubyonrails.org/getting_started.html#creating-articles) –

相關問題