teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

更に追記

2020/05/22 04:24

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -19,4 +19,19 @@
19
19
  controller の new、それを呼び出す view、logを載せてください
20
20
 
21
21
  修正内容
22
- merge(product_id: params[:product_id] となっていたので、idをproduct_idにしゅうせい
22
+ merge(product_id: params[:product_id] となっていたので、idをproduct_idにしゅうせい
23
+
24
+ 更に追記
25
+ save!にて「Product must exist,」 すなわち product_id がnilもしくは実在しないid
26
+
27
+ reviews_controller#review_params の product_id: params[:product_id]のparams[:product_id]が怪しい
28
+
29
+ new.html.erb の %= f.hidden_field_tag :product_id, @product.id %> の @product があやしい
30
+
31
+ controller#new の @product = Product.find(params[:id]) の params[:id が怪しい
32
+
33
+ **new.htmlが何の id を渡しているのか**
34
+
35
+ **new.htmlを起動しているcontrollerは idのために new.htmlにどんな値をわたしているのか**
36
+
37
+ Boldなところの情報が必要です

1

一部修正

2020/05/22 04:24

投稿

winterboum
winterboum

スコア23653

answer CHANGED
@@ -9,11 +9,14 @@
9
9
  reviews_controller の newが書かれていないので(こんなことを書かなくて済む質問が書けるようになってください)??ですがここで
10
10
  @product = Product.find(params[:id])して(前提、newを呼ぶviewがidを渡していること)
11
11
  newのviewにて
12
- `hidden_field_tag :id, @product.id`
12
+ `hidden_field_tag :product_id, @product.id`
13
13
  してください。
14
14
  で、review_paramsを
15
- `params.require(:review).permit(、、、、、).merge(product_id: params[:id], user_id: current_user.id)`
15
+ `params.require(:review).permit(、、、、、).merge(product_id: params[:product_id], user_id: current_user.id)`
16
16
 
17
17
  変更点多いのであまり厳密に見ていません。
18
18
  うまく行かなかったら
19
- controller の new、それを呼び出す view、logを載せてください
19
+ controller の new、それを呼び出す view、logを載せてください
20
+
21
+ 修正内容
22
+ merge(product_id: params[:product_id] となっていたので、idをproduct_idにしゅうせい