##NoMethodError (undefined method `id' for nil:NilClass)
前提・実現したいこと
現在、アプリケーションのコメント機能の実装を行っています。
アプリケーション内容としましては、レシピを投稿⇨新規登録・ログイン済みのユーザーは投稿に対してコメントを行える実装を行いたいのですが、コメントを入力し、送信ボタンを押すとNomethoeErrorが出力され、保存・表示ができない状態です。
原因がわかる方、ご教授お願い致します。
発生している問題・エラーメッセージ
Nomethod Error(undefined method `id' for nil:NilClass)
該当のソースコード
show.html.erb
<%# コメント投稿機能 %> <div class="comment__container"> <%= form_with(model: [@recipe, @comment], local: true) do |f| %> <%= f.text_area :text, placeholder: "コメントする", rows: "2" %> <%= f.submit '送信' %> <% end %> <div class="comments"> <h4><コメント一覧></h4> <% @comments.each do |comment| %> <p> <strong><%= link_to comment.user.nickname, "/users/#{comment.user_id}" %>:</strong> <%= comment.text %> </p> <% end %> </div> </div>
comments_controller
def create @comment = Comment.create(comment_params[:id]) binding.pry redirect_to "/recipes/#{comment.recipe.id}" end private def comment_params params.require(:comment).permit(:comment).merge(user_id: current_user.id, recipe_id: params[:recipe_id]) end
recipes_controller
~~~~~~~省略~~~~~~~~~~ def show @recipe = Recipe.find(params[:id]) @comment = Comment.new @comments = @recipe.comments.includes(:user) end ~~~~~~~~省略~~~~~~~~~~
models/comment.rb
class Comment < ApplicationRecord belongs_to :recipe belongs_to :user end
models/user.rb
has_many :comments
models/recipes.rb
has_many :comments
試したこと
保存ができない・idがnilになっているので、バリデーションかアソシエーションがうまくかかっていないと思い確認しましたが、きちんと記述できているように思えます。
原因がわかる方いらっしゃいましたら、ご教授お願い致します。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー