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

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

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

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

Ruby

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

解決済

1回答

1148閲覧

Railsで削除ボタンに関してのルーティングエラー

kabigon

総合スコア3

DELETE

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

Ruby

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

Ruby on Rails

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

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

0クリップ

投稿2020/05/12 13:28

前提・実現したいこと

rails初学者です。
注文データの削除ボタンを作成しているのですが、
ルーティングエラーとなってしまいます。

発生している問題・エラーメッセージ

エラーメッセージ No route matches [DELETE] "/orders"

該当のソースコード

ruby

1#routes.rb 2Rails.application.routes.draw do 3 root "orders#index" 4 resources :orders, only: [:index, :new, :create, :destroy] 5end 6

ruby

1#ターミナル 2 Prefix Verb URI Pattern Controller#Action 3 root GET / orders#index 4 orders GET /orders(.:format) orders#index 5 POST /orders(.:format) orders#create 6new_order GET /orders/new(.:format) orders#new 7 order DELETE /orders/:id(.:format) orders#destroy 8

ruby

1#orders_controller.rb 2 def destroy 3 order = UserFood.find(params[:id]) 4 order.destroy 5 redirect_to root_path 6 end

ruby

1#index.html.haml 2.right-bar 3 .order-list 4 - @user_foods.each do |user_food| 5 .order-box 6 .order-box__deta 7 .order-box__deta--name 8 = user_food.food 9 .order-box__deta--number 10 = user_food.quantity 11 .order-box__deta--delete 12 = link_to '消', '/orders/#{order.id}', method: :delete ←ここでエラーが発生 13 .price-box 14 .price-box__deta 15 .price-box__deta--yen 16 ¥ 17 .price-box__deta--price 18 = @total

試したこと

似たようなエラーメッセージのサイトの記述を確認
HTTPメソッドはdeleteになっているのか
ordersコントローラーにdestroyの記載があるのか、スペルが違ってないか
HTTPメソッドとパスがあっているのか

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージのとおりです。DELETE /orders/:idとなっているように、どれを削除するかのIDをURLの一部としてセットする必要があります。

投稿2020/05/12 13:52

maisumakun

総合スコア146018

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

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

kabigon

2020/05/12 14:33

回答して頂いてありがとうございます! = link_to '消', '/orders/#{order.id}', method: :delete のコードの『 #{order.id} 』が削除したいIDとしての記載のつもりだったのですが表記ミス、またはうまく読み込まれていないということでしょうか? 何度もすみません、、
maisumakun

2020/05/12 14:37

はい、一重引用符だと、URLにそのまま取り込まれますので、#以降はフラグメントという扱いになってしまいます。
kabigon

2020/05/12 14:51

なるほど。。そういうことだっのですね、 ルーティングエラーはなんとか抜けることができました◎ ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問