🍣

【Rails7】link_toで作成したリンクのmethod: :postがGETになる問題

2022/11/30に公開

エラー内容

「Rails7」でviewテンプレートに以下のコードを書きました。

  <%= link_to chat_rooms_path(params: { user_id: user.id }), method: :post, class: "no-underline" %>

チャットルームコントローラーのPOSTメソッドを使いたいところ、GETで呼び出されたためGETのメソッドはなかったので下記の画像のようにエラーになりました。

解決方法

  • Rails6の場合「rails-ujs」を読み込む必要がある。参考
  • Rails7からはTurboがデフォルトになり、rails-ujsの機能はTurboが引き受ける形になったので、data-methodではなくdata-turbo-methodを使うようになった参考
  <%= link_to chat_rooms_path(params: { user_id: user.id }), data: { "turbo-method": :post }, class: "no-underline" %> 
GitHubで編集を提案

Discussion