↓↓クリックして頂けると励みになります。
Rails6.1を利用していて「delete」メソッドを呼び出そうとすると、No route matches [GET]というルーティングエラーが出ることがあります。
「delete」メソッドを呼び出しているのに「get」で処理がかかるのでこのエラーが出ます。
これはUJS(JavaScriptの送信に関する処理などが書かれたライブラリ)の問題で、「link_to()」メソッドを利用すると起こります。
この場合、「button_to」メソッドに変更するとこのエラーは出なくなります。
例を書いておきます。
エラーが出る記述
<%= link_to '削除', delete_photo_room_url(photo_id: photo.id, id: @room.id), method: :delete, data: { confirm: "本当に削除してよろしいですか?" }, style: "z-index: 100;", class: "btn btn-outline-danger btn-sm" %>
エラーが出ない記述
<%= button_to '削除', delete_photo_room_url(photo_id: photo.id, id: @room.id), method: :delete, data: { confirm: "本当に削除してよろしいですか?" }, style: "z-index: 100;", class: "btn btn-outline-danger btn-sm" %>
もしdeviseを利用していて同じようなエラーに遭遇した場合は、別の対処法もありますので、下記の記事を参考にしてください。
mrradiology.hatenablog.jp
↓↓クリックして頂けると励みになります。