RailsでdeleteメソッドをHTMLから送信する際は以下のように記述していた。

<%= link_to "Log out", logout_path, method: :delete %>

Rails7からJavaScriptの仕様が変更になったようで、この記述だとGETで通信をしてしまう模様。Turbo Linkの仕様変更が原因らしい。以下が正しい。

<%= link_to "Log out", logout_path, data: { turbo_method: delete } %>

一見動作しているようにも見えるが問題があった。詳細ページを開いたときにエラーとなった。

`undefined local variable or method `delete’ for` とのことだが、エラーの内容がよくわからない。なぜかGETメソッドが実行されて500エラーになっているようだ。

対策としてボタンタグにするとよい。

<%= button_to "Log out", logout_path, method: :delete %>

HTML的にも、Aタグに対してリンク先をJavaScriptで設定するのはあまりよろしくないのでbuttonタグのほうが吉。