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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 6

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

Q&A

解決済

2回答

1399閲覧

railsで注文機能を作成したが完了画面のviewが表示されない

NASKA--

総合スコア21

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/10/23 06:00

編集2022/10/24 01:39

ECサイトの注文機能を作っていたのですが、注文機能自体は完成し、完了画面に遷移した時にパスはあっていて、ターミナルにエラーも出ていないのになぜかviewだけが表示されません。このようなことは初めてなので対処法がわからなくなってしまいました。

orders_controller

1class Public::OrdersController < ApplicationController 2 before_action :authenticate_customer! 3 4 def index 5 end 6 7 def show 8 end 9 10 def new 11 @order = Order.new 12 @customer = current_customer 13 @addresses = current_customer.addresses 14 end 15 16 def create 17 @order = Order.new(order_params) 18 @order.customer_id = current_customer.id 19 if @order.save! 20 @cart_items = current_customer.cart_items 21 @cart_items.each do |cart_item| 22 order_detail = OrderDetail.new(order_id: @order.id) 23 order_detail.price = cart_item.item.price 24 order_detail.amount = cart_item.amount 25 order_detail.item_id = cart_item.item_id 26 order_detail.save! 27 end 28 @cart_items.destroy_all 29 redirect_to orders_complete_path 30 else 31 render "new" 32 end 33 end 34 35 def confirm 36 @cart_items = current_customer.cart_items 37 @order = Order.new(order_params) 38 @order.customer_id = current_customer.id 39 @order.payment_method = params[:order][:payment_method] 40 @total_payment = current_customer.cart_items.cart_items_total_price(@cart_items) 41 @order.shipping_cost = 800 42 43 if params[:order][:address_option] == "0" 44 @order.postal_code = current_customer.postal_code 45 @order.address = current_customer.address 46 @order.name = current_customer.full_name_a 47 render 'confirm' 48 elsif params[:order][:address_option] == "1" 49 @address = Address.find(params[:order][:address_id]) 50 @order.postal_code = @address.postal_code 51 @order.address = @address.address 52 @order.name = @address.name 53 render 'confirm' 54 elsif params[:order][:address_option] == "2" 55 @address = current_customer.addresses.new 56 @address.address = params[:order][:address] 57 @address.name = params[:order][:name] 58 @address.postal_code = params[:order][:postal_code] 59 @address.customer_id = current_customer.id 60 if @address.save 61 @order.postal_code = @address.postal_code 62 @order.name = @address.name 63 @order.address = @address.address 64 else 65 render 'new' 66 end 67 end 68 end 69 70 def complete 71 end 72 73 private 74 75 def order_params 76 params.require(:order).permit(:postal_code,:address, :name, :shipping_cost, 77 :address, :total_payment, :payment_method, :status) 78 end 79 80 def address_params 81 params.require(:address).permit(:customer_id, :name, :postal_code, :address) 82 end 83end
<div class="container"> <h2 class="border-bottom">注文情報確認</h2> <div class="row"> <div class="col-xs-8"> <table class="table table-striped table-bordered table-hover table-sm"> <thead> <tr> <th>商品名</th> <th>単価(税込)</th> <th>数量</th> <th>小計</th> </tr> </thead> <tbody> <% @cart_items.each do |cart_item| %> <tr> <td> <%= image_tag cart_item.item.get_image, size: '50x50' %> <%= cart_item.item.name %> </td> <td><%= (cart_item.item.price * 1.1).floor.to_s(:delimited) %></td> <td><%= cart_item.amount %></td> <td><%= (cart_item.item.price * cart_item.amount * 1.1).floor.to_s(:delimited) %></td> </tr> <% end %> </tbody> </table> </div> <%= form_with model: @order, url: orders_path, local: true do |f| %> <div class="col-xs-3"> <table class="table table-striped table-bordered table-hover table-sm"> <tbody> <tr> <td>送料</td> <td> <%= @order.shipping_cost.to_s(:delimited) %> <%= f.hidden_field :address, :value => @order.address %> </td> </tr> <tr> <td>商品合計</td> <td> <%= @total_payment.to_s(:delimited) %> </td> </tr> <tr> <td>請求金額</td> <td> <%= (@total_payment + 800).to_s(:delimited) %> <%= f.hidden_field :total_payment, :value => (@total_payment + 800) %> </td> </tr> </tbody> </table> </div> </div> <div class="form-group"> <h3>支払方法:</h3> <h4><%= @order.payment_method_i18n %></h4> <%= f.hidden_field :payment_method, :value => @order.payment_method %> </div> <div class="form-group"> <h3>お届け先:</h3> 〒<%= @order.postal_code.to_s %> <%= f.hidden_field :postal_code, :value => @order.postal_code %> <%= @order.address %> <%= f.hidden_field :address, :value => @order.address %> <%= @order.name %> <%= f.hidden_field :name, :value => @order.name %> </div> <div class="text-left"> <%= link_to "情報入力へ戻る", new_order_path, class: "btn btn-primary" %> </div> <div class="text-center"> <%= f.submit "購入を確定する", class: "btn btn-success btn-lg text-center" %> </div> <% end %> </div>

routes.rb

1Rails.application.routes.draw do 2 root to: 'public/homes#top' 3 4 get "about"=>"public/homes#about" 5 get 'customers/edit' => "public/customers#edit" 6 patch 'customers' => "public/customers#update" 7 8 devise_for :customers,skip: [:passwords], controllers: { 9 registrations: "public/registrations", 10 sessions: 'public/sessions' 11 } 12 scope module: :public do 13 resources :items, only: [:index, :show] 14 15 get 'customers/my_page' => "customers#show" 16 get 'customers/unsubscribe' => "customers#unsubscribe" 17 patch 'customers/withdraw' => "customers#withdraw" 18 19 resources :cart_items, only: [:index, :update, :destroy, :create] 20 delete 'cart_item/destroy_all' => "cart_items#destroy_all" 21 22 resources :orders, only: [:new, :create, :index, :show] 23 post 'orders/confirm' => "orders#confirm" 24 get 'orders/complete' => "orders#complete" 25 end 26 27 scope module: :customer do 28 resources :addresses, only: [:index, :edit, :create, :update, :destroy] 29 end 30 31 devise_for :admin, skip: [:registrations, :passwords] ,controllers: { 32 sessions: "admin/sessions" 33 } 34 35 namespace :admin do 36 get "/" => "homes#top" 37 resources :items, only: [:index, :new, :create, :show, :edit, :update] 38 resources :genres, only: [:index, :create, :edit, :update] 39 resources :customers, only: [:index, :show, :edit, :update] 40 resources :orders, only: [:index, :show, :update] 41 resources :order_details, only: [:update] 42 end 43end

そして次のが問題の読み込まれていないviewです。

complete.html.erb

1<div class="container"> 2 <div class="row"> 3 <h1 class="text-center">ご注文ありがとうございました!!</h1> 4 <div class="text-center"> 5 <%= link_to "トップページへ戻る", root_path, class: "btn btn-primary" %> 6 </div> 7 </div> 8</div>

コードの書き方が見にくいかもしれないですが、アドバイスお願いいたします

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

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

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

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

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

no1knows

2022/10/23 11:43

complete_pathをcontroller内のどこで呼び出しているのでしょうか?
NASKA--

2022/10/23 14:01

createアクションのredirect_toで呼び出しています
no1knows

2022/10/24 00:37

念の為、routes.rbを追記していただけないでしょうか?
NASKA--

2022/10/24 01:40

追記しました
guest

回答2

0

自己解決

ターミナルを何回も見直してみたらcompleteアクションが実行されたのではなく、showアクションが実行されていました。なので、routesファイルのshowアクションより上にcompleteを持ってきたら解決できました

投稿2022/10/24 01:51

NASKA--

総合スコア21

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

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

0

def createにて
save!となっているところをsaveにしても変わりませんか?

投稿2022/10/23 12:11

.taniyan

総合スコア17

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

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

NASKA--

2022/10/23 14:01

変えてみましたが、表示されませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問