環境
Ruby:3.2.1
Rails:7.0.0
Rails5.1からlink_toのdeleteメソッドがGetメソッドになる
<%= link_to 'ログアウト', 'パス', method: :delete %>
リンクを押すと以下のエラーが発生します。
methodをdeleteに指定したのに、Getメソッドで送られています。
開発者ツールでHTMLを確認してみたところ、deleteになっていることが確認できます。
<a rel="nofollow" data-method="delete" href="パス">ログアウト</a>
原因
link_toの場合、deleteメソッドはJavascriptでGetをDeleteに変換されるそうです。
そのため、今回はJavascriptが効いていなかったのでGetのままになっているのだと考えられます。
解決策
今回、自分が実施した対応はlink_to
を以下のように修正することです。
詳しい内容は参考資料をご覧ください
<%= link_to "ログアウト", "パス", data: {turbo_method: :delete} %>
参考資料
Rails7でlink_toのmethod: :deleteが動作しない
rails7でlink_toのmethod: :deleteが動作しない場合の対処