質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

8218閲覧

【Rails】Deleteが効かず、データを削除できない

ikutyan46

総合スコア18

DELETE

ファイルシステムからファイル、データベースからレコードを削除することまたはメモリ内のオブジェクトの割り当てを取り消すことをさします。もしくは、HTTPプロトコルのDELETEを指すこともあります。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

2クリップ

投稿2020/06/01 13:16

【解決したいこと】
Railsのshow画面上で、link_toメソッドを使って、Deleteアクションを行いデータを消去したいのですが、現状HTTPメソッドが「GET」のままとなっており、データを消去できない状態です。

下記の通りに試してみたのですが、その他の根本的な解決策が見当たらないため、今回発生した原因と対処法について、ご教示いただけませんでしょうか?よろしくお願い致します。

※追加でコードが必要であれば、なんなりとお申し付けください!

【私の学習状況】
Web未経験で転職希望している、Ruby,Rails学習して1ヶ月

【試したこと】
Qiitaの記事を元に、「//= require jquery_ujs」がないと、GET→PUTに変換できないということだったので、実装されているか確認したがちゃんと実装されていました。

【環境】
Ruby:2.6.5
Rails:5.2.4.3

【コード】
application.js

//= require activestorage //= require jquery_ujs //= require jquery //= require jquery3 //= require moment //= require moment/ja.js //= require tempusdominus-bootstrap-4.js //= require popper //= require bootstrap-sprockets //= require_tree

show.html.slim

h1 練習記録の詳細 = form_with model:@record, url: records_path, method: :post, local:true do |f| [中略] = link_to '削除する', @record, method: :destroy, data: { confirm: "練習記録を削除します。よろしいですか?" }, class: 'btn btn-danger'

records.controller.rb

def show @record = Record.find(params[:id]) # @output = @record.outputs.all end [中略] def destroy @record = Record.find(params[:id]) @record.destroy redirect_to root_to_path, notice: "練習記録を削除しました。" end

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

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

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

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

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

guest

回答1

0

ベストアンサー

jquery_ujsjqueryより後で読み込まないといけないのではないでしょうか。//= require jquery_ujsの行を//= require jquery3より後までもっていってみてください。

投稿2020/06/01 13:18

maisumakun

総合スコア145183

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

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

maisumakun

2020/06/01 13:21

あと、link_toに書くmethodはHTTPメソッドなので、destroyではなくdeleteが適切です。
ikutyan46

2020/06/01 13:42

maisumakunさん 早速、ありがとうございます! 言い忘れていたのですが、今回のモデルは、他モデルとアソシエーションしているため、「destroy」が正しいことを検索して確認できました。 >jquery_ujsはjqueryより後で読み込まないといけないのではないでしょうか →こちらについて、おっしゃる通りにすると、ポップアップが出たのですが、Routing_Errorになりました。 routes.rbでは、下記の通り、resourcesでやっているので対応してくれるのでは?と思ったのですが、解決のために他にみるべきところはございますでしょうか?ご教示頂けますと幸いです。 routes.rb ``` Rails.application.routes.draw do devise_for :users root to: 'records#index' resources :records end ```
maisumakun

2020/06/01 13:43

> 今回のモデルは、他モデルとアソシエーションしているため、「destroy」が正しいことを検索して確認できました。 HTTPメソッドに「DESTROY」というものは通常ありません。ルーティングで確認してみてください。
winterboum

2020/06/01 20:22

ブラウザーからは HTTP  DELETEメソッドを送り 受けたRailsがdestroyで処理する ということです
ikutyan46

2020/06/02 01:58

maisumakunさん winterboumさん 確認しました。 「DELETE /records/:id(.:format) records#destroy」 となっていましたので、winterboumさんのご説明で理解できました。ご教示ありがとうございます。 ちなみにですが、DELETEroutes.rbでは、下記の通り、resourcesでやっているので対応してくれるのでは?と思ったのですが、解決のために他にみるべきところはございますでしょうか?ご教示頂けますと幸いです。 routes.rb ``` Rails.application.routes.draw do devise_for :users root to: 'records#index' resources :records end ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問