実現したいこと
投稿に紐づくコメントを削除したいです。
前提
railsでコメント機能を作成しています。
発生している問題・エラーメッセージ
定番のメッセージなのですが
undefined method `destroy!' for nil:NilClass
該当のソースコード
ruby
1 scope module: 'users' do 2 resources :posts, except: %i[index new] do 3 resources :comments, module: :posts, only: %i[create destroy] 4 end 5 end
ruby
1class Users::Posts::ApplicationController < Users::ApplicationController 2 before_action :set_post 3 4 private 5 6 def set_post 7 @post = Post.find(params[:post_id]) 8 end 9end
ruby
1class Users::Posts::CommentsController < Users::Posts::ApplicationController 2 3 def destroy 4 comment = current_user.comments.find_by(id: params[:id]) 5 comment.destroy! 6 redirect_to post_path(@post), alert: 'コメントを削除しました' 7 end 8 9 private 10 11 def comment_params 12 params.require(:comment).permit(:content) 13 end 14end
ruby
1- comments.each do |comment| 2 .card.w-50.mx-auto.my-3 3 .card-header 4 = "#{comment.user.name}さんのコメント" 5 .card-body 6 = comment.content 7 - if comment.user == current_user 8 = link_to post_comment_path(comment), data: { turbo_method: :delete, turbo_confirm: '本当に削除しますか?' }, class: 'text-reset ms-auto' do 9 %i.bi.bi-trash
viewに関してはパーシャルにしているので@comments
ではなくcomments
になっています
試したこと
最初はcomment = current_user.comments.find(params[:id])
という記述で書いていたのですがこれだとレコードが見つからないというエラーになったので、find_by
で試したところcomment
がnilになっていて、結局どうすればいいのかわからなくなってしまいました。
補足情報(FW/ツールのバージョンなど)
ruby 3.1.3
Rails 7.0.4