環境情報&前提条件
- 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
を消さなければうまく動作しないケースで、筆者は少しハマってしまったので記事化しました。