0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

link_to で post メソッドを指定することができなかったときの解決法

Posted at

実行環境

OS: Windows10
一部、WSL2 (Ubuntu)のGUIアプリを利用して、コマンドを実行しています。
ruby 3.1.4
Rails 7.0.7.2

発生したエラー

Railsを勉強しながらコードを書いていて、削除リンクを実現して

    <%= link_to "削除", "/memo/#{@memo.id}/destroy", {method: "post"} %>

と記述しました。そして、アクセスしてみると
image.png
と出て、サーバーを起動しているターミナルには

ActionController::RoutingError (No route matches [GET] "/list/1/destroy"):

と出ました。エラー文を見れば、どうやら{method: "post"}の部分が機能していないらしい。

解決法

ターミナルで次を実行する(WSL2の方が楽だったのでWSLを起動しています)。

$ ./bin/importmap pin @hotwired/turbo-rails 
--出力例--
Pinning "@hotwired/turbo-rails" to https://ga.jspm.io/npm:@hotwired/turbo-rails@7.3.0/app/javascript/turbo/index.js
Pinning "@hotwired/turbo" to https://ga.jspm.io/npm:@hotwired/turbo@7.3.0/dist/turbo.es2017-esm.js
Pinning "@rails/actioncable/src" to https://ga.jspm.io/npm:@rails/actioncable@7.0.7/src/index.js

実行すると、config/importmap.rbに先ほど出力として出てきた3つのピンが追加されていることが確認できます。

config/importmap.rb
pin "application", preload: true
+ pin "@hotwired/turbo-rails", to: "https://ga.jspm.io/npm:@hotwired/turbo-rails@7.3.0/app/javascript/turbo/index.js"
pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
pin_all_from "app/javascript/controllers", under: "controllers"
+ pin "@hotwired/turbo", to: "https://ga.jspm.io/npm:@hotwired/turbo@7.3.0/dist/turbo.es2017-esm.js"
+ pin "@rails/actioncable/src", to: "https://ga.jspm.io/npm:@rails/actioncable@7.0.7/src/index.js"

最後に、さっきの削除リンクのメソッド指定の部分をdata: {turbo_method: "post"}とする。

    <%= link_to "削除", "/memo/#{@memo.id}/destroy", data: {turbo_method: "post"} %>

こうすることで解決できた。

参考サイト

Rails 7.0 で標準になった importmap-rails とは何なのか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?