前提・実現したいこと
Railsで簡易的なECサイトをつくっています。
商品の詳細ページから購入ボタンを押して一覧画面(index)に戻り、「購入が完了しました」などのフラッシュメッセージを出すという仕様にしたいと考えています。
ルーティングとコントローラーの設計をどうすべきかご教授ください。
発生している問題・エラーメッセージ
Routing Error No route matches [GET] "/order"
該当のソースコード
routes.rb
rails
1 2 3Rails.application.routes.draw do 4 devise_for :users 5 root to: 'products#index' 6 resources :products, only: :show do 7 resources :order, only: :create 8 end 9 resources :users, only: [:show, :edit, :update] 10end 11
orders.controller.rb
rails
1lass OrdersController < ApplicationController 2 3 def create 4 redirect_to root_path, notice: '購入が完了しました。' 5 end 6 7end
show.html.haml
rails
1.show 2 .show__img 3 %img(src="" alt="")/ 4 .show__data 5 .show__data__name 6 商品の名前 7 .show__data__date 8 発送日 9 .show__data__price 10 値段 11 .show__data__btn 12 = link_to product_order_index_path do 13 %button 購入する 14 .show__exolan 15 商品説明 16.producer 17 .producer__voice 18 %p 生産者の声
試したこと
createアクションを使ってその中にフラッシュメッセージとリダイレクトをさせてみましたが、うまくいきません。
フォームを送信する仕様ではないので、7つのアクション以外を定義してできないか考えてみましたが、よく分かりませんでした。
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.3
ruby 2.5.1
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。