🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

4368閲覧

Rails6で、Scaffoldにて生成したDestroyボタンを押してもDELETEリクエストを送れない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

0クリップ

投稿2019/11/19 06:07

編集2019/11/19 06:13

前提・実現したいこと

Scaffoldにて生成したDestroyボタンによるDELETEリクエストでデータを消したい

発生している問題

以下のerbから生成されたHTMLのDestroyボタンを押しても、Showのページに飛んでしまいます。

erb

1<td><%= link_to 'Destroy', [:bo_pages, creation], method: :delete, data: { confirm: 'Are you sure?' } %></td>

HTML

1<a data-confirm="Are you sure?" rel="nofollow" data-method="delete" href="/bo_pages/creations/3">Destroy</a>

Console

1Started GET "/bo_pages/creations/3" for ::1 at 2019-11-19 14:35:11 +0900 2Processing by BoPages::CreationsController#show as HTML 3 Parameters: {"id"=>"3"}

ログを見る限りではDELETEメソッドが送信できていないような挙動です。

その他関係があるかもしれないソースコード

application.js

javascript

1// This is a manifest file that'll be compiled into application.js, which will include all the files 2// listed below. 3// 4// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's 5// vendor/assets/javascripts directory can be referenced here using a relative path. 6// 7// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8// compiled file. JavaScript code in this file should be added after the last require_* statement. 9// 10// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11// about supported directives. 12// 13 14//= require rails-ujs 15//= require jquery 16//= require turbolinks 17//= require bootstrap.min 18//= require_tree .

application.html.erb先頭部分

erb

1<!DOCTYPE html> 2<html> 3 <head> 4 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 5 <link href="https://unpkg.com/sanitize.css" rel="stylesheet" /> 6 <%= favicon_link_tag('favicon.ico') %> 7 <title><%= full_title(yield(:title)) %></title> 8 <%= csrf_meta_tags %> 9 <%= stylesheet_link_tag 'application', media: 'all', 10 'data-turbolinks-track': 'reload' %> 11 <%= javascript_pack_tag 'application', 12 'data-turbolinks-track': 'reload' %> 13 <%= render 'layouts/shim' %> 14 </head> 15. 16. 17. 18

routes

1Rails.application.routes.draw do 2 3 #フロント 4 root 'front_pages#home' 5 get '/about', to: 'front_pages#about' 6 get '/news', to: 'front_pages#news' 7 get '/works', to: 'front_pages#works' 8 get '/members', to: 'front_pages#members' 9 get '/contacts', to: 'front_pages#contacts' 10 11 #バックオフィス 12 namespace :bo_pages do 13 resources :admins, :news, :creations, :members 14 end 15 get '/bo_pages', to: 'bo_pages/home#index' 16 get '/bo_pages/login', to: 'bo_pages/login#index' 17 18end

試したこと

・application.jsにrequire jquery-ujsを書く/消す
・application.jsにrequire rails-ujsを書く/消す
・rails webpacker:installを実行

Chromeの開発者ツールを見る限りではJavascriptエラーは出ていませんでした。

補足情報(FW/ツールのバージョンなど)

Windows10
Ruby 2.6.5
Rails 6.0.1

初心者ゆえ情報が不足していたら申し訳ありません。
追記等必要でしたらお申し付けください。
よろしくお願いします。

Hiroooaki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

上で挙げさせていただいていたapplication.jsは
\app\assets\javascriptsの中のapplication.jsだったのですが、
ここでrails-ujsを読み込もうとしても意味がなかったみたいです。

まず前提としてRails5.1以降、DELETE等GETではないリクエストを送る際はrails-ujsというjsが使われているようなのですが、それが読み込めていなかったために今回の事象が発生していたのだと思われます。

読み込めていなかった原因としては、恐らくwebpackerを使用していたためです。

Rails6等でwebpackerを使用している場合は、\app\javascript\packsの中のapplication.jsに読み込みたいjsを記述する必要があるようです。

以下の2行を\app\javascript\packs\application.jsに追記したところ、DestroyボタンでDELETEリクエストが送信され、データが消せるようになりました。

Javascript

1import Rails from 'rails-ujs'; 2Rails.start();

投稿2019/11/19 06:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問