rails newしたばかりのシンプルなアプリケーションで、link_to
を使って、deleteを行いたかった。
が、、なぜかGETになってしまう。
No route matches [GET]
のエラーが出てしまっていたので、解決方法を紹介します。
目次
開発環境
- 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>
これがベストな解決方法かは分かりませんが、一旦解決自体はできました。
また良い解決方法が見つかったらご紹介します。