Ruby on Rails

turbo_method: :deleteにしてもNo route matches [GET]というエラーが出てしまう。Rails7

本サイトの記事内にアフィリエイト広告が含まれる場合があります。

turbo_method: :deleteにしてもNo route matches [GET]というエラーが出てしまう。Rails7のサムネイル画像

awayuki

音大出身。学生時代はフリーランスでWEB制作・開発しながら、2社で長期エンジニアインターンを経験しました(2年半)。 23卒で、自社開発ベンチャー企業に入社しエンジニア・デザイナーとして働き、2024年1月起業しました! このブログでは、ブログ開設方法・プログラミング・音大からエンジニアになれた方法など書いています。 お仕事依頼はお問い合わせフォームからお問い合わせお願いします。 Zenn

rails newしたばかりのシンプルなアプリケーションで、link_to を使って、deleteを行いたかった。

が、、なぜかGETになってしまう。

No route matches [GET] のエラーが出てしまっていたので、解決方法を紹介します。

著:すがわら まさのり, 著:前島 真一, 著:橋立 友宏, 著:五十嵐 邦明, 著:後藤 優一
¥3,751 (2024/10/10 12:25時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

開発環境

  • ruby 3.3.0
  • Rails 7.1.3.4

解決方法

まずは動かなかったコードは以下になります。

<%= link_to '削除', task_path(task), data: { turbo_method: :delete, }, class: 'btn btn-danger' %>

これで削除ボタンを押すとエラーが出ていました。

app/views/layouts/application.html.erb に1行追加します。

<%= javascript_include_tag "turbo", type: "module" %>

原因はおそらく Turboリンクが正しくロードされていなかった ことにあります。

全体コードも貼っておきます。

<!DOCTYPE html>
<html>
  <head>
    <title>RailsApp</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
    <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
    <%= javascript_include_tag "turbo", type: "module" %>
    <%#= javascript_importmap_tags %>
  </head>

  <body>
    <%= yield %>
  </body>

  </html>

これがベストな解決方法かは分かりませんが、一旦解決自体はできました。

また良い解決方法が見つかったらご紹介します。

参考URL

https://discuss.rubyonrails.org/t/guide-v7-0-3-1-link-to-destroy-turbo-method-delete-doesnt-works-ubuntu-22-04/81326/2

  • この記事を書いた人

awayuki

音大出身。学生時代はフリーランスでWEB制作・開発しながら、2社で長期エンジニアインターンを経験しました(2年半)。 23卒で、自社開発ベンチャー企業に入社しエンジニア・デザイナーとして働き、2024年1月起業しました! このブログでは、ブログ開設方法・プログラミング・音大からエンジニアになれた方法など書いています。 お仕事依頼はお問い合わせフォームからお問い合わせお願いします。 Zenn

-Ruby on Rails
-