質問編集履歴

2 文法の修正

kabigon

kabigon score 3

2020/05/17 12:48  投稿

テーブルをリセットする機能を追加したい
Routing Error
ビュー画面にテーブルの情報をリセットするボタンを作成しているのですが
なかなか削除できずにいます。
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
```
  • Ruby on Rails

    18930 questions

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

1 書式の改善

kabigon

kabigon score 3

2020/05/17 12:11  投稿

テーブルをリセットする機能を追加したい
ビュー画面にテーブルの情報をリセットするボタンを作成しているのですが
なかなか削除できずにいます。
destroyアクションに記載してあるのは"消"の方のボタンで
今回実装できずにいるのは"RESET"のボタンです。
削除ボタンが2つあるとdestroyアクションに両方記載できるのでしょうか
**Routing Error**
No route matches [POST] "/orders/destroy_all"
##controller
```
def destroy
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
```
.order-box__deta--name
.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",:
         = 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
```
  • Ruby on Rails

    18930 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る