回答編集履歴

1

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

2021/02/12 22:35

投稿

suama
suama

スコア1997

test CHANGED
@@ -34,8 +34,90 @@
34
34
 
35
35
  # たぶんsaveの前に、このへんが必要なのかなと。
36
36
 
37
+ # 20210213 ここを修正しました params(:comment_id) でなく params[:comment_id]
38
+
37
- @comment.community_id = params(:comment_id)
39
+ @comment.community_id = params[:comment_id]
38
40
 
39
41
 
40
42
 
41
43
  ```
44
+
45
+
46
+
47
+ ### 20210213 追記:
48
+
49
+
50
+
51
+ コメントで ``params(:comment_id)`` としたらエラーになってしまったとのことで、失礼いたしました!
52
+
53
+ もとのままだと メソッドとして認識するので、arguments (given 1, expected 0) になってしまいます。すみません...。
54
+
55
+
56
+
57
+ ハッシュから値を取り出すことになるので、正しくは以下になります。
58
+
59
+
60
+
61
+ ```
62
+
63
+ @comment.community_id = params[:comment_id]
64
+
65
+ ```
66
+
67
+
68
+
69
+ ですね。
70
+
71
+
72
+
73
+ また、この値はどこから来ているのかですが、リクエストパラメータからです。
74
+
75
+ コントローラーに対するログに、以下のように「こういうパラメータでリクエストを送ってますよ」という情報が書き出されています。
76
+
77
+
78
+
79
+ ```ruby
80
+
81
+ Processing by CommentsController#create as HTML
82
+
83
+ Parameters: {"authenticity_token"=>"OKAibpz00Oo96iCmc9a94tl22sqsMB1W9sLRkMYKDUiJzSSGgo6NTQfjJh19ZM/S6XBnlxe+KSB3Wkeb7kw2Yg==", "comment"=>{"content"=>"こんにちは"}, "commit"=>"コメントする", "community_id"=>"1"}
84
+
85
+ ```
86
+
87
+
88
+
89
+ comment_paramsを処理しているので、このあたりのことはご周知かと思いますが、コントローラ側に渡った時には、params という変数に、このデータ一式が入ります。
90
+
91
+ たまに悪意を持って変なデータを送りつけてくるものもあるので、このparamsから、必要な値だけを取り出したり、バリデーションしたものを使って保存する...という流れになりますね。
92
+
93
+
94
+
95
+
96
+
97
+ ```ruby
98
+
99
+
100
+
101
+ # さて、コントローラの中でデバッグすると、paramsの中身は...
102
+
103
+ params
104
+
105
+
106
+
107
+ # この情報が入っています
108
+
109
+ {"authenticity_token"=>"OKAibpz00Oo96iCmc9a94tl22sqsMB1W9sLRkMYKDUiJzSSGgo6NTQfjJh19ZM/S6XBnlxe+KSB3Wkeb7kw2Yg==", "comment"=>{"content"=>"こんにちは"}, "commit"=>"コメントする", "community_id"=>"1"}
110
+
111
+
112
+
113
+ # comment_paramsは、このparamsの中の、params[:comment][:content]の値が入っているけれど、
114
+
115
+ # comment_id は、params[:comment_id] としないと取り出せないです
116
+
117
+ ```
118
+
119
+
120
+
121
+ 如何でしょうか。
122
+
123
+ うまくいきますように。