回答編集履歴

1

誤情報の修正

2020/01/17 05:47

投稿

fgem28
fgem28

スコア4

test CHANGED
@@ -1,55 +1 @@
1
- 自己解決しました。コントラーラーの記述を以下のように変更し、
2
-
3
- ```ruby
4
-
5
- def create
6
-
7
- @cart_item = CartItem.new(cart_item_params)
8
-
9
- @cart_item.customer_id = current_customer.id
10
-
11
- if @cart_item.save
1
+ もう1件の回答がベストアンサーです。
12
-
13
- redirect_to cart_items_path
14
-
15
- else
16
-
17
- session[:cart_item] = @cart_item.attributes.slice(*cart_item_params.keys)
18
-
19
- @genres = Genre.all
20
-
21
- @item = Item.find_by(id:@cart_item.item_id)
22
-
23
- redirect_to item_path(@item.id), flash: {alert: '※個数を選択して下さい'}
24
-
25
- end
26
-
27
- end
28
-
29
- ```
30
-
31
-
32
-
33
- viewにhidden_fieldを設置してitem_idを持ってこれるようにしました。
34
-
35
- ```ruby
36
-
37
- <%= form_for @cart_item do |f| %>
38
-
39
- <%= render 'layouts/errors_messages', model: f.object %>
40
-
41
- <%= f.hidden_field :item_id, value: @item.id %>
42
-
43
- <%= f.select :quantity, options_for_select((1..20).to_a), include_blank: "個数選択" %>
44
-
45
- <%= f.submit "カートに入れる" %>
46
-
47
- <% end %>
48
-
49
-
50
-
51
- ```
52
-
53
-
54
-
55
- 今考えると、@cart_itemにはitem_idのバラバラな複数のレコードが入っているので、コントローラーで「@cart_item.item_id = 2」のようにしてもうまくいかないのは当たり前でした。