ビュー画面にテーブルの情報をリセットするボタンを作成しているのですが
なかなか削除できずにいます。
destroyアクションに記載してあるのは"消"の方のボタンで
今回実装できずにいるのは"RESET"のボタンです。
Routing Error
No route matches [POST] "/orders/destroy_all"
##controller
class OrdersController < ApplicationController def index @user_food = UserFood.new @user_foods = UserFood.all price = UserFood.sum(:price) quantity = UserFood.sum(:quantity) @total = price end def new end def create user_food = UserFood.find_by(food: params[:food]) if user_food.nil? user_food = UserFood.new(user_food_params) if user_food.save redirect_to root_path else render order: :index end else user_food.increment(quantity:1); end end def destroy order = UserFood.find(params[:id]) order.destroy redirect_to root_path end def destroy_all UserFood.destroy_all redirect_to root_path end private def user_food_params params.require(:user_food).permit(:food, :price, :quantity) end end
##index.html.haml
.right-bar .order-list - @user_foods.each do |user_food| .order-box .order-box__deta .order-box__deta--name = user_food.food .order-box__deta--number = user_food.quantity .order-box__deta--delete = link_to "消", order_path(user_food), method: :delete .reset-box = link_to "RESET", destroy_all_orders_path, method: :derete .price-box .price-box__deta .price-box__deta--yen ¥ .price-box__deta--price = @total
##Routes.rb
Rails.application.routes.draw do root "orders#index" resources :orders, only: [:index, :new, :create, :destroy,]do collection do delete 'destroy_all' end end end
##rails routes
Prefix Verb URI Pattern Controller#Action root GET / orders#index destroy_all_orders DELETE /orders/destroy_all(.:format) orders#destroy_all orders GET /orders(.:format) orders#index POST /orders(.:format) orders#create new_order GET /orders/new(.:format) orders#new order DELETE /orders/:id(.:format) orders#destroy
テーブルの情報をリセットとは具体的にどういう意味でしょうか?
データベースのテーブル内のレコードの中身をリセット(消す)という意味ですか?
それとも画面上に表示されているのテーブル表の内容をリセット(空欄表示)にしたいという意味ですか?
どういうシステムを作っていて、どの機能のどの部分をどうリセットしたいのか詳しく記載をお願いします。
ビュー画面で保存した商品全てが表示されるようになっています。
現在は右の"消"を押すとその商品だけ消される仕様になっております。
そして追加したいのが下のRESETを押すと上部のデータ全てが削除されるようにしたいです。
https://gyazo.com/2d2807c3eb7ccd587d4689f327afd3f0
言葉足らずですみません。
表示されているのは料理のDBに入っている全データになるんでしょうか?
それとも抽出してきた一部のデータになるのでしょうか?
こういった疑問が次々と出てきてしまいますので、
質問をされる際は一部の機能のコードだけではなく、
全体のコードを記載された方が回答者も把握しやすいですよ。
・Controllerファイル
・Viewファイル
・Modelファイル
・routes.rb
・画面のスクリーンショット
は少なくとも記載された方が良いでしょう。
表示されている料理がDBにある全てのデータであれば、
"destroy_all"メソッドで指定したデータを一括削除できると思います。
destroyアクション内ではなく、別でdestroy_allアクションを新規で作成して処理させてもいいかもしれません。(routes.rbへのルーティング追記が必要です)
はい,質問の仕方には気をつけます!
1度新しくルーティングを作ってみます。
新しくアクションを追加してみたのですが、
"/orders/destroy_all"となります。
指定したパスは間違っていないのですがどういうことでしょうか。
回答1件
あなたの回答
tips
プレビュー