質問編集履歴
1
cartsコントローラーの追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -64,6 +64,23 @@
|
|
64
64
|
end
|
65
65
|
|
66
66
|
```
|
67
|
+
### 問題コード箇所 (cartsコントローラー)
|
68
|
+
```
|
69
|
+
class CartsController < ApplicationController
|
70
|
+
def index
|
71
|
+
@cart = Item.find(session[:cart])
|
72
|
+
end
|
73
|
+
|
74
|
+
def create
|
75
|
+
@order = Order.new(item_id: params[:item_id])
|
76
|
+
session[:cart] = []unless session[:cart]
|
77
|
+
session[:cart] << params[:item_id]
|
78
|
+
flash[:success] = "カートに追加できました!"
|
79
|
+
redirect_to item_orders_path
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
```
|
67
84
|
### 問題コード箇所 (order_index.html.erb)
|
68
85
|
商品価格である item.price をカート内商品金額を足した合計を @=sum としています。
|
69
86
|
```
|
@@ -101,17 +118,39 @@
|
|
101
118
|
|
102
119
|
### 試したこと
|
103
120
|
購入ボタンクリック後、ordersコントローラーcreateアクションでは@sumはnilとなり、上手くデータを持ってこれていません。
|
104
|
-
ordersコントローラーcreateアクションに以下を記述してみましたが、
|
121
|
+
ordersコントローラーcreateアクション箇所に以下を記述してみましたが、どちらの記述も
|
105
122
|
NoMethodError undefined method `sum' for nil:NilClass となります。
|
106
123
|
```
|
124
|
+
def create
|
107
|
-
@items = Item.all
|
125
|
+
@items = Item.all
|
108
126
|
@sum = @Items.sum(:item_price)
|
127
|
+
@order = Order.new(order_params)
|
128
|
+
if @order.valid?
|
129
|
+
pay_item
|
130
|
+
@order.save
|
131
|
+
return redirect_to root_path
|
132
|
+
else
|
133
|
+
render 'index'
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
109
137
|
```
|
110
138
|
```
|
139
|
+
def create
|
111
|
-
@items = Item.all
|
140
|
+
@items = Item.all
|
112
141
|
@carts.each do |item|
|
113
142
|
@sum += item.item_price
|
114
143
|
end
|
144
|
+
@order = Order.new(order_params)
|
145
|
+
if @order.valid?
|
146
|
+
pay_item
|
147
|
+
@order.save
|
148
|
+
return redirect_to root_path
|
149
|
+
else
|
150
|
+
render 'index'
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
115
154
|
```
|
116
155
|
|
117
156
|
どのように記述したら、商品の合計金額@samをordersコントローラーcreateアクションで使用できるようになるのか、ご教示願います。よろしくお願いいたします。
|