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

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

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

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

Q&A

解決済

1回答

297閲覧

カート内が空の時にはurl直打ちで次に飛べないようにしたい

NASKA--

総合スコア21

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/10/24 08:07

今ECサイトを作っているのですが、カート内が空の時にはurl直打ちで遷移できないようにしようと思い、メソッドを作ったところ今度はからじゃなくても遷移しなくなってしまいました

orders_controller

1class Public::OrdersController < ApplicationController 2 before_action :authenticate_customer! 3 before_action :correct_cart 4 5 def index 6 end 7 8 def show 9 end 10 11 def new 12 @order = Order.new 13 @customer = current_customer 14 @addresses = current_customer.addresses 15 end 16 17 def create 18 @order = Order.new(order_params) 19 @order.customer_id = current_customer.id 20 if @order.save 21 @cart_items = current_customer.cart_items 22 @cart_items.each do |cart_item| 23 order_detail = OrderDetail.new(order_id: @order.id) 24 order_detail.price = cart_item.item.price 25 order_detail.amount = cart_item.amount 26 order_detail.item_id = cart_item.item_id 27 order_detail.save 28 end 29 @cart_items.destroy_all 30 redirect_to orders_complete_path 31 else 32 render "new" 33 end 34 end 35 36 def confirm 37 @cart_items = current_customer.cart_items 38 @order = Order.new(order_params) 39 @order.customer_id = current_customer.id 40 @order.payment_method = params[:order][:payment_method] 41 @total_payment = current_customer.cart_items.cart_items_total_price(@cart_items) 42 @order.shipping_cost = 800 43 44 if params[:order][:address_option] == "0" 45 @order.postal_code = current_customer.postal_code 46 @order.address = current_customer.address 47 @order.name = current_customer.full_name_a 48 render 'confirm' 49 elsif params[:order][:address_option] == "1" 50 @address = Address.find(params[:order][:address_id]) 51 @order.postal_code = @address.postal_code 52 @order.address = @address.address 53 @order.name = @address.name 54 render 'confirm' 55 elsif params[:order][:address_option] == "2" 56 @address = current_customer.addresses.new 57 @address.address = params[:order][:address] 58 @address.name = params[:order][:name] 59 @address.postal_code = params[:order][:postal_code] 60 @address.customer_id = current_customer.id 61 if @address.save 62 @order.postal_code = @address.postal_code 63 @order.name = @address.name 64 @order.address = @address.address 65 else 66 render 'new' 67 end 68 end 69 end 70 71 def complete 72 73 end 74 75 private 76 77 def order_params 78 params.require(:order).permit(:postal_code,:address, :name, :shipping_cost, 79 :address, :total_payment, :payment_method, :status) 80 end 81 82 def address_params 83 params.require(:address).permit(:customer_id, :name, :postal_code, :address) 84 end 85 86 def correct_cart 87 @cart_items = current_customer.cart_items 88 unless @cart_items.size == 0 89 redirect_to cart_items_path, notice: "カート内は空です" 90 end 91 end 92end

どのように解決すればよいでしょうか

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

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

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

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

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

guest

回答1

0

自己解決

unlessの部分をifに変えたらいけました

投稿2022/10/24 10:59

NASKA--

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問