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

回答編集履歴

1

変数の取り出しを修正しました。

2021/02/12 22:35

投稿

suama
suama

スコア1997

answer CHANGED
@@ -16,6 +16,47 @@
16
16
  @comment.user_id = current_user.id
17
17
 
18
18
  # たぶんsaveの前に、このへんが必要なのかなと。
19
+ # 20210213 ここを修正しました params(:comment_id) でなく params[:comment_id]
19
- @comment.community_id = params(:comment_id)
20
+ @comment.community_id = params[:comment_id]
20
21
 
21
- ```
22
+ ```
23
+
24
+ ### 20210213 追記:
25
+
26
+ コメントで ``params(:comment_id)`` としたらエラーになってしまったとのことで、失礼いたしました!
27
+ もとのままだと メソッドとして認識するので、arguments (given 1, expected 0) になってしまいます。すみません...。
28
+
29
+ ハッシュから値を取り出すことになるので、正しくは以下になります。
30
+
31
+ ```
32
+ @comment.community_id = params[:comment_id]
33
+ ```
34
+
35
+ ですね。
36
+
37
+ また、この値はどこから来ているのかですが、リクエストパラメータからです。
38
+ コントローラーに対するログに、以下のように「こういうパラメータでリクエストを送ってますよ」という情報が書き出されています。
39
+
40
+ ```ruby
41
+ Processing by CommentsController#create as HTML
42
+ Parameters: {"authenticity_token"=>"OKAibpz00Oo96iCmc9a94tl22sqsMB1W9sLRkMYKDUiJzSSGgo6NTQfjJh19ZM/S6XBnlxe+KSB3Wkeb7kw2Yg==", "comment"=>{"content"=>"こんにちは"}, "commit"=>"コメントする", "community_id"=>"1"}
43
+ ```
44
+
45
+ comment_paramsを処理しているので、このあたりのことはご周知かと思いますが、コントローラ側に渡った時には、params という変数に、このデータ一式が入ります。
46
+ たまに悪意を持って変なデータを送りつけてくるものもあるので、このparamsから、必要な値だけを取り出したり、バリデーションしたものを使って保存する...という流れになりますね。
47
+
48
+
49
+ ```ruby
50
+
51
+ # さて、コントローラの中でデバッグすると、paramsの中身は...
52
+ params
53
+
54
+ # この情報が入っています
55
+ {"authenticity_token"=>"OKAibpz00Oo96iCmc9a94tl22sqsMB1W9sLRkMYKDUiJzSSGgo6NTQfjJh19ZM/S6XBnlxe+KSB3Wkeb7kw2Yg==", "comment"=>{"content"=>"こんにちは"}, "commit"=>"コメントする", "community_id"=>"1"}
56
+
57
+ # comment_paramsは、このparamsの中の、params[:comment][:content]の値が入っているけれど、
58
+ # comment_id は、params[:comment_id] としないと取り出せないです
59
+ ```
60
+
61
+ 如何でしょうか。
62
+ うまくいきますように。