質問編集履歴

2

ビューの情報をより詳細に変更しました。

2020/07/04 16:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
 
8
8
 
9
+ ログイン状態でトップページに設定している、products#indexの「カートに入れる」ボタンを押すと、ユーザーidと紐づいたカートが生成され、cartテーブルとproductテーブルの中間テーブル的な役割を担うcart_itemテーブルに商品の個数と、それぞれのidを保存できるようにしたいです。
10
+
9
- トップページに設定しているproducts#indexの「カートに入れる」ボタンを押すとエラーがてしまいます。
11
+ 現在、「カートに入れる」ボタンを押すと、下記のエラーが吐かれてしまいます。
10
12
 
11
13
 
12
14
 
@@ -84,10 +86,48 @@
84
86
 
85
87
 
86
88
 
89
+ %ul
90
+
91
+ - @products.each do |product|
92
+
93
+ %li.product
94
+
95
+ .pro-main
96
+
97
+ .pro-left
98
+
99
+ .pro-image
100
+
101
+ = image_tag product.image.url, height: "120"
102
+
103
+ .pro-name
104
+
105
+ = product.name
106
+
107
+ .pro-center
108
+
109
+ .pro-explain
110
+
111
+ = product.explain
112
+
113
+ .pro-right
114
+
115
+ .pro-price
116
+
117
+ = product.price
118
+
119
+ %span
120
+
121
+
122
+
123
+ #以下フォーム
124
+
87
- =form_for([@product, @cart_item], url: add_item_products_path, method: :post) do |f|
125
+ =form_for([@product, @cart_item], url: add_item_products_path, method: :post) do |f|
88
126
 
89
127
  =f.hidden_field :product_id, value: @product.id
90
128
 
129
+ /=f.hidden_field :cart_id, value: @cart.id
130
+
91
131
  .pro-qua
92
132
 
93
133
  = f.number_field :quantity, value: "0", style: "text-align:right", min: 0, class: "pro-quantity"

1

うまく保存ができていなかったので、内容を変更しました

2020/07/04 16:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -80,6 +80,10 @@
80
80
 
81
81
  #app/views/products/index.html.haml
82
82
 
83
+ #トップページと商品の購入ページを兼ねています。
84
+
85
+
86
+
83
87
  =form_for([@product, @cart_item], url: add_item_products_path, method: :post) do |f|
84
88
 
85
89
  =f.hidden_field :product_id, value: @product.id
@@ -98,6 +102,8 @@
98
102
 
99
103
  #application_controller.rb
100
104
 
105
+ #current_cartを定義しています
106
+
101
107
  helper_method :current_cart
102
108
 
103
109
 
@@ -270,17 +276,57 @@
270
276
 
271
277
  #cart.rb
272
278
 
279
+ class Cart < ApplicationRecord
280
+
281
+ has_many :cart_items, dependent: :destroy
282
+
283
+ has_many :products, through: :cart_items
284
+
285
+ belongs_to :user
286
+
287
+ end
288
+
273
- ```
289
+ ```
274
-
290
+
275
- ```
291
+ ```
292
+
276
-
293
+ #cart_item.rb
294
+
295
+ class CartItem < ApplicationRecord
296
+
297
+ belongs_to :product
298
+
299
+ belongs_to :cart
300
+
301
+ end
302
+
277
- ```
303
+ ```
278
-
304
+
279
- ```
305
+ ```
306
+
280
-
307
+ #product.rb
308
+
309
+ class Product < ApplicationRecord
310
+
311
+ mount_uploader :image, ImageUploader
312
+
313
+ has_many :cart_items, dependent: :destroy
314
+
315
+ has_many :cart, through: :cart_items
316
+
317
+ end
318
+
281
- ```
319
+ ```
282
-
320
+
283
- ```
321
+ ```
322
+
323
+ #user.rb
324
+
325
+ class User < ApplicationRecord
326
+
327
+ has_one :cart, dependent: :destroy
328
+
329
+ end
284
330
 
285
331
  ```
286
332
 
@@ -292,9 +338,19 @@
292
338
 
293
339
  ### 試したこと
294
340
 
295
-
296
-
297
- ここ問題に対て試したことを記載してださい。
341
+ 下記の記述等を参考にししたがうまくいきませんでした
342
+
343
+
344
+
345
+ [rails カート機能の実装(多対多)NoMethodError](https://teratail.com/questions/204294?link=qa_related_pc)
346
+
347
+ [RailsでEC系に良く出てくるカート機能を解説 / 実装してみた](https://qiita.com/Doppon/items/3947c0027d9ea555cc39)
348
+
349
+ [Rails5でカート機能を作るためのロジックを作ってみた](https://qiita.com/Coolucky/items/89ce3a0f25c9dfdb38c1)
350
+
351
+
352
+
353
+ ルーティングや、コントローラーの設定、フォームの使い方などに関する理解の浅さこそが最大の原因であると思いますが、どうにも進めなくなってしまい、お力添えをお願いしたいです。
298
354
 
299
355
 
300
356
 
@@ -302,4 +358,4 @@
302
358
 
303
359
 
304
360
 
305
- ここにより詳細な情報を記載してください。
361
+ Rails 5.0.7.2