質問編集履歴

2

追記

2018/08/26 04:53

投稿

shirou
shirou

スコア15

test CHANGED
File without changes
test CHANGED
@@ -231,3 +231,47 @@
231
231
 
232
232
 
233
233
  Rails 5.2
234
+
235
+
236
+
237
+ ### 追記
238
+
239
+ index.html.erbにて
240
+
241
+
242
+
243
+ ```ruby
244
+
245
+ <% if @cart.blank? %>
246
+
247
+ <%= "カートは空です" %><br>
248
+
249
+ <% else %>
250
+
251
+ <% @cart.each do |item| %>
252
+
253
+ <tr>
254
+
255
+ <td>商品番号: <%= item.id %></td>
256
+
257
+ <td>価格: <%= item.price %>円</td><br>
258
+
259
+ <% sum += item.price %>
260
+
261
+ <%= button_to "Clear Product", cart_path(item), method: :patch, data: { confirm: 'Are you sure?' } %><br>
262
+
263
+ <% end %><br>
264
+
265
+
266
+
267
+ ```
268
+
269
+ cart_path(item)とすることで送られているデータは`cart.controller def index`にて定義された `@cart = session[:cart].map { |item_id| Item.find(item_id) }`の `@cart`ではなく、 `def update`にて定義した `@cart`が入ること。
270
+
271
+ そしてCartはモデルではない為に、`destroy,update`などのメソッドは継承されていない為使用不可なこと。
272
+
273
+ しかし `@cart = Item.find(params[:id])`と記述を変えることで、 `@cart.destroy`を実行するとItemモデルのdestroyを実行することで再び大元のデータを消してしまうこと。
274
+
275
+ その代わり、 `@cart`は削除したいデータそのものを引っ張ってきていること。。
276
+
277
+ ここまでが分かりました。

1

追記

2018/08/26 04:53

投稿

shirou
shirou

スコア15

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,35 @@
20
20
 
21
21
  変化なし。
22
22
 
23
-
23
+ terminalでは以下のような形になります。
24
+
25
+ delete/delete_atメソッドを用いても、railsの方でエラーは起きないのですが、削除した内容も反映されないといった具合になります。
26
+
27
+ ```
28
+
29
+ Started PATCH "/cart/1" for 127.0.0.1 at 2018-08-25 16:19:19 +0900
30
+
31
+ Processing by CartController#update as HTML
32
+
33
+ Parameters: {"authenticity_token"=>"uCSoRxnlGlRIT/Z4YHFcppIA91GQpnIqbLXMtTZnOnsFi+1X4TNMGN49eBZO+qzgd+kCcZovUw48uosD2pdLjQ==", "id"=>"1"}
34
+
35
+ Item Load (0.4ms) SELECT "items".* FROM "items" WHERE "items"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
36
+
37
+ ↳ app/controllers/cart_controller.rb:26
38
+
39
+ CACHE Item Load (0.0ms) SELECT "items".* FROM "items" WHERE "items"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
40
+
41
+ ↳ app/controllers/cart_controller.rb:26
42
+
43
+ Item Load (0.4ms) SELECT "items".* FROM "items" WHERE "items"."id" = $1 LIMIT $2 [["id", 3], ["LIMIT", 1]]
44
+
45
+ ↳ app/controllers/cart_controller.rb:26
46
+
47
+ Redirected to http://localhost:3000/cart
48
+
49
+ Completed 302 Found in 5ms (ActiveRecord: 0.8ms)
50
+
51
+ ```
24
52
 
25
53
  ### 該当のソースコード
26
54