環境情報&前提条件
- Ruby 3.2.1
- Rails 7.0.0
解決したい内容
- 以下のように
turbo-method: :postを設定しているlink_toタグにおいて[POST]メソッドではなく、[GET]メソッド扱いされる。
<%= link_to hoge_path(hoge), data: { turbo: false, "turbo-method": :post } %>
<!-- 画面に表示されるエラー -->
Routing Error
No route matches [GET] "/hoge"
解決手順
-
turbo: falseと"turbo-method": :postは共存できない。turbo: falseの記述を削除して、以下のようにすることで解決。
<%= link_to hoge_path(hoge), data: { "turbo-method": :post } %>
補足
- link_toはデフォルトでは
[GET]メソッド扱いされるので、turbo: falseをつけている場合は他のプロパティに関わらずデフォルトの[GET]扱いとなるようである。 - turboによるトラブルを防ぐために、
turbo: falseのようなturboを無効化する処置を取るケースも多いと考えられる。 - 今回は
turbo: falseを消さなければうまく動作しないケースで、筆者は少しハマってしまったので記事化しました。