質問編集履歴
1
cartsコントローラーの追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -130,6 +130,40 @@
|
|
130
130
|
|
131
131
|
```
|
132
132
|
|
133
|
+
### 問題コード箇所 (cartsコントローラー)
|
134
|
+
|
135
|
+
```
|
136
|
+
|
137
|
+
class CartsController < ApplicationController
|
138
|
+
|
139
|
+
def index
|
140
|
+
|
141
|
+
@cart = Item.find(session[:cart])
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
def create
|
148
|
+
|
149
|
+
@order = Order.new(item_id: params[:item_id])
|
150
|
+
|
151
|
+
session[:cart] = []unless session[:cart]
|
152
|
+
|
153
|
+
session[:cart] << params[:item_id]
|
154
|
+
|
155
|
+
flash[:success] = "カートに追加できました!"
|
156
|
+
|
157
|
+
redirect_to item_orders_path
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
```
|
166
|
+
|
133
167
|
### 問題コード箇所 (order_index.html.erb)
|
134
168
|
|
135
169
|
商品価格である item.price をカート内商品金額を足した合計を @=sum としています。
|
@@ -204,21 +238,45 @@
|
|
204
238
|
|
205
239
|
購入ボタンクリック後、ordersコントローラーcreateアクションでは@sumはnilとなり、上手くデータを持ってこれていません。
|
206
240
|
|
207
|
-
ordersコントローラーcreateアクションに以下を記述してみましたが、
|
241
|
+
ordersコントローラーcreateアクション箇所に以下を記述してみましたが、どちらの記述も
|
208
242
|
|
209
243
|
NoMethodError undefined method `sum' for nil:NilClass となります。
|
210
244
|
|
211
245
|
```
|
212
246
|
|
247
|
+
def create
|
248
|
+
|
213
|
-
@items = Item.all
|
249
|
+
@items = Item.all
|
214
250
|
|
215
251
|
@sum = @Items.sum(:item_price)
|
216
252
|
|
253
|
+
@order = Order.new(order_params)
|
254
|
+
|
255
|
+
if @order.valid?
|
256
|
+
|
257
|
+
pay_item
|
258
|
+
|
259
|
+
@order.save
|
260
|
+
|
261
|
+
return redirect_to root_path
|
262
|
+
|
263
|
+
else
|
264
|
+
|
265
|
+
render 'index'
|
266
|
+
|
267
|
+
end
|
268
|
+
|
269
|
+
end
|
270
|
+
|
271
|
+
|
272
|
+
|
217
|
-
```
|
273
|
+
```
|
218
|
-
|
274
|
+
|
219
|
-
```
|
275
|
+
```
|
276
|
+
|
220
|
-
|
277
|
+
def create
|
278
|
+
|
221
|
-
@items = Item.all
|
279
|
+
@items = Item.all
|
222
280
|
|
223
281
|
@carts.each do |item|
|
224
282
|
|
@@ -226,6 +284,26 @@
|
|
226
284
|
|
227
285
|
end
|
228
286
|
|
287
|
+
@order = Order.new(order_params)
|
288
|
+
|
289
|
+
if @order.valid?
|
290
|
+
|
291
|
+
pay_item
|
292
|
+
|
293
|
+
@order.save
|
294
|
+
|
295
|
+
return redirect_to root_path
|
296
|
+
|
297
|
+
else
|
298
|
+
|
299
|
+
render 'index'
|
300
|
+
|
301
|
+
end
|
302
|
+
|
303
|
+
end
|
304
|
+
|
305
|
+
|
306
|
+
|
229
307
|
```
|
230
308
|
|
231
309
|
|