前提・実現したいこと
Ruby on rails 初心者です。
現在、ECサイトの構築を行っており、つまずいたのは「カート情報」の削除処理です。
cart_itemsテーブル
に入っているカート情報を購入が完了した後に該当テーブルのカラムを削除しようと思っております。
ですので、「商品購入」ボタン押下→createアクション
でaddressesテーブル
やordrsテーブル
に商品情報などを登録→destroyアクション
でcart_itemsテーブル
のカラム情報を削除→top画面へ遷移
という流れを構築しようと考えています。
発生している問題・エラーメッセージ
`createアクション`から`destroyアクション`へ遷移されない。 No route matches {:action=>"destroy", :controller=>"orders"} redirect_to action: :destroy ★エラー部分
該当のソースコード
(views/orders/index.html.erb)一部記載 <%= form_for(@address, url: orders_path) do |f|%> <%= f.hidden_field :user_id, value: current_user.id %> <%= f.hidden_field :last_name, value: session[:last_name] %> <%= f.hidden_field :first_name, value: session[:first_name] %> <%= f.hidden_field :furi_last_name, value: session[:furi_last_name] %> <%= f.hidden_field :furi_first_name, value: session[:furi_first_name] %> <%= f.hidden_field :postal_code, value: session[:postal_code] %> <%= f.hidden_field :prefecture, value: session[:prefecture] %> <%= f.hidden_field :address, value: session[:address] %> <%= f.hidden_field :store, value: session[:store] %> <%= f.hidden_field :how_to_pay, value: session[:how_to_pay] %> <%= f.fields_for :orders do |o|%> <% @cart_items.each do |cart_item|%> <% product = Product.find_by(id: cart_item.product_id) %> <%= o.hidden_field :product_id, value: product.id %> <%= o.hidden_field :quantity, value: cart_item.quantity %> <% end%> <% end %> <p><%= f.submit "注文確定", class: 'btn' %></p> <% end %>
(controllers/ordes_controller.rb)★一部記載 def create @address = Address.new(address_params) if @address.save flash[:success] = "購入が完了しました。" session.delete(:store) session.delete(:last_name) session.delete(:first_name) session.delete(:furi_last_name) session.delete(:furi_first_name) session.delete(:postal_code) session.delete(:prefecture) session.delete(:address) session.delete(:how_to_pay) redirect_to action: :destroy else render "index" end end def destroy CartItem.where(cart_id: current_cart).delete_all redirect_to root_path end
(routes.rb) orders GET /orders(.:format) orders#index POST /orders(.:format) orders#create order GET /orders/:id(.:format) orders#show DELETE /orders/:id(.:format) orders#destroy
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/12 09:36
2020/09/12 09:37
2020/09/12 09:38
2020/09/12 09:39