質問編集履歴

1

cartsコントローラーの追記

2021/03/13 08:19

投稿

syosinsya-mark
syosinsya-mark

スコア3

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