前提・実現したいこと
railsで映画のレビュー投稿サイトを製作しています。
投稿したレビューに対してコメントを投稿する機能を実装したのですが、
そのコメントを削除するという機能を追加しようと思っています。
その際に、以下のエラーが出ました。
発生している問題・エラーメッセージ
NoMethodError in CommentsController#destroy undefined method `join' for {:id=>"6", :post_id=>"6"}:Hash
該当のソースコード
Ruby
1##posts/show.html.haml## 2(略) 3.userComments 4 %h4 <コメント一覧> 5 - if @comments 6 - @comments.each do |comment| 7 .userComments__comment 8 .userComments__comment-info 9 = link_to comment.user.nickname, "/users/#{comment.user_id}", class: "userComments__nickname" 10 .userComments__created-at 11 = comment.created_at 12 = link_to "削除", post_comment_path(comment.post_id, comment.id), class: ##serComments__edit-btn", method: :delete 13 .userComments__text 14 = comment.text 15 16##comments_controller.rb## 17(略) 18def destroy 19 comment = Comment.find(id: params[:id], post_id: params[:post_id]) 20 comment.destroy 21 redirect_to posts_path 22 end 23 24##routes.rb## 25Rails.application.routes.draw do 26 devise_for :users 27 root to: "posts#index" 28 resources :posts, except: :index do 29 resources :comments, only: [:create, :destroy] 30 end 31 resources :users, only: :show 32end 33
試したこと
binding.pryをcomments_controller.rb内で使用した。
すると、commentsテーブルのidが正しく渡されていないことがわかりました。
そこで、comment = Comment.find(id: params[:id], post_id: params[:post_id])
を、comment = Comment.find(comment_id: params[:comment_id], post_id: params[:post_id])
に修正してみましたが、
undefined method `join' for {:comment_id=>nil, :post_id=>"6"}:Hash
というエラーが出ました。
何れにしても、comment_id: params[:comment_id]
という部分(書き方?)が間違っているように思います。
補足情報(FW/ツールのバージョンなど)
こちら初学者です、、
頑張って理解に努めますので是非返信のほどよろしくお願いいたします、、、
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/30 06:37
2020/03/30 06:39
2020/03/30 06:45
2020/03/30 06:47
2020/03/30 06:56
2020/03/30 07:36
2020/03/30 07:44
2020/03/30 07:47
2020/03/30 07:50
2020/03/30 07:51
2020/03/30 09:20
2020/03/30 09:20