2017-07-06 26 views
0

私はコメントを可能にする投稿システムを持っています。 私は通知システムを作っていますし、このエラーを取得しています:未定義メソッド `user 'for nil:NilClass

NoMethodErrorをCommentsController#で 未定義のメソッド `ユーザー作成「nilのために:NilClass

を、私は、ユーザーがポスト属性として定義されていることを考えると、私は」それが大丈夫なはずなので投稿を呼びます。ここで

は、私がそれの一部のためのチュートリアルを次れたことに留意すべきで、それがorginiallyライン「create_notificationの@post、@comment」を持っていたが、それが作成したメソッド

def create 
    @comment = Comment.new(comment_params) 
    @comment.user_id = current_user.id 
    respond_to do |format| 
     if @comment.save 
     create_notification @post 
     format.html { redirect_to request.referer, notice: 'Comment was successfully created.' } 
     format.json { render :show, status: :created, location: @comment } 
     else 
     format.html { render :new } 
     format.json { render json: @comment.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

を作成することです後で引数エラー。ここ

がメソッドcreate_notificationであり、エラーが2行目に

def create_notification(post) 
     return if post.user.id == current_user.id 
     Notification.create(user_id: post.user.id, 
         notified_by_id: current_user.id, 
         post_id: post.id, 
         comment_id: comment.id, 
         notice_type: 'comment') 
    end 

あるなお、第2行から始まり、コメントアウト場合、それは次の行に移ります。ここで

アプリトレースcreate_notification @post

app/controllers/comments_controller.rb:71:in `create_notification' 
app/controllers/comments_controller.rb:33:in `block in create' 
app/controllers/comments_controller.rb:31:in `create' 
+0

'@ post'を' create_notification'メソッドに渡していますが、 '@ post'をどこで定義していますか? – mmichael

+0

さて、コメントは投稿と関連付けられていますが、同じものではありませんが、それだけで十分だろうと思いました。これは新しいコメントフォームの一部です:<%= f.hidden_​​field:post_id、:value => @ post.id%>。彼らはまた、彼らのモデルに関連付けられています。 – MaxLeoTony

+0

あなたは何を想定しているのか知っていますか?あなたのメソッドは引数を期待しています。この場合、Postオブジェクトです。しかし、 '@ post'が定義されていないので、あなたはそれにnilを渡しています。また、この文脈では、フォームは 'create_notification'メソッドに渡すものとは何の関係もありません。 – mmichael

答えて

1

NoMethodError in CommentsController#create undefined method `user' for nil:NilClass

@postはあなたが@postを定義していることを確認してくださいnilです。例えば、@post = Post.find(params[:comment][:post_id])

関連する問題