学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails6.1 | No route matches [GET]

↓↓クリックして頂けると励みになります。



No route matches
No route matches

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



↓↓クリックして頂けると励みになります。