私はコメントを可能にする投稿システムを持っています。 私は通知システムを作っていますし、このエラーを取得しています:未定義メソッド `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'
'@ post'を' create_notification'メソッドに渡していますが、 '@ post'をどこで定義していますか? – mmichael
さて、コメントは投稿と関連付けられていますが、同じものではありませんが、それだけで十分だろうと思いました。これは新しいコメントフォームの一部です:<%= f.hidden_field:post_id、:value => @ post.id%>。彼らはまた、彼らのモデルに関連付けられています。 – MaxLeoTony
あなたは何を想定しているのか知っていますか?あなたのメソッドは引数を期待しています。この場合、Postオブジェクトです。しかし、 '@ post'が定義されていないので、あなたはそれにnilを渡しています。また、この文脈では、フォームは 'create_notification'メソッドに渡すものとは何の関係もありません。 – mmichael