購入された商品にSOLD OUTの記述が表示されるようにしたい。
条件分岐でもし選択した商品に紐づく購入記録が存在していたら(空ではなかったら)、"sold out"と表示するという条件をつけたつもりだがName ErrorやNo Method Errorが返ってくる。
orederコントローラー
1class OrdersController < ApplicationController 2 before_action :authenticate_user! 3 def index 4 @order = OrderDonation.new 5 @item = Item.find(params[:item_id]) 6 end 7 8 def create 9 @item = Item.find(params[:item_id]) 10 @order = OrderDonation.new(order_params) 11 if @order.valid? 12 Payjp.api_key = ENV["PAYJP_SECRET_KEY"] 13 Payjp::Charge.create( 14 amount: @item[:price], 15 card: order_params[:token], 16 currency: 'jpy' 17 ) 18 @order.save 19 redirect_to root_path 20 else 21 render 'index' 22 end 23 end 24 25 private 26 27 def order_params 28 params.require(:order_donation).permit(:post_id, :prefecture_id, :city, :address, :buildingname, :tel, :token).merge(user_id: current_user.id, item_id: params[:item_id]) 29 end 30end
orderモデル
1class OrderDonation 2 include ActiveModel::Model 3 4 attr_accessor :post_id, :prefecture_id, :city, :address, :buildingname, :tel, :orders_id, :user_id, :item_id, :token 5 6 with_options presence: true do 7 8 validates :post_id, format: {with: /\A[0-9]{3}-[0-9]{4}\z/, message: "is invalid. Include hyphen(-)"} 9 validates :prefecture_id, numericality: { other_than: 1 } 10 validates :city 11 validates :address 12 validates :buildingname 13 validates :tel 14 end 15 16 def save 17 order = Order.create(user_id: user_id, item_id: item_id) 18 Address.create!(post_id: post_id, prefecture_id: prefecture_id, city: city, address: address, buildingname: buildingname, tel: tel, order_id: order.id ) 19 end 20end 21
viewファイル
1<% if order.item_id.present? %> 2 <div class='sold-out'> 3 <span>Sold Out!!</span> 4 </div> 5以下省略
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。