質問編集履歴

5

試したこと追記

2020/05/17 21:49

投稿

shota-imoto
shota-imoto

スコア37

test CHANGED
File without changes
test CHANGED
@@ -270,9 +270,9 @@
270
270
 
271
271
 
272
272
 
273
- ### 追記 試したこと
273
+ ## 追記 試したこと
274
-
274
+
275
- ## フォームで送るキー名を工夫
275
+ ### フォームで送るキー名を工夫
276
276
 
277
277
  別画面で実装した際にも同様にaccepts_nested_attributes_forコマンドが機能しませんでした。
278
278
 
@@ -318,8 +318,6 @@
318
318
 
319
319
  @song = Song.new(song_params)
320
320
 
321
- # 親レコードの
322
-
323
321
  ```
324
322
 
325
323
  にあたります。変数の型とは違う型を代入している際にでるエラーのようです。
@@ -332,7 +330,7 @@
332
330
 
333
331
 
334
332
 
335
- ## accepts~で同じエラーが発生している記事を発見
333
+ ### accepts~で同じエラーが発生している記事を発見
336
334
 
337
335
  [Rails fields_for と accepts_nested_attributes_for を使うときの注意点](https://acchann.hatenablog.com/entry/2018/03/16/224300)
338
336
 

4

試したことの追記

2020/05/17 21:49

投稿

shota-imoto
shota-imoto

スコア37

test CHANGED
File without changes
test CHANGED
@@ -272,6 +272,8 @@
272
272
 
273
273
  ### 追記 試したこと
274
274
 
275
+ ## フォームで送るキー名を工夫
276
+
275
277
  別画面で実装した際にも同様にaccepts_nested_attributes_forコマンドが機能しませんでした。
276
278
 
277
279
  いっそ、フォームの方でごまかしせないか?と考えviewファイルを変更しました。field_forで送るキー名を変更してみました。
@@ -306,8 +308,6 @@
306
308
 
307
309
  ```
308
310
 
309
-
310
-
311
311
  すると別のエラーメッセージが表示されました。
312
312
 
313
313
  ![エラー画像](cddfd784f4ed26d5f7de01c1624e9d5f.png)
@@ -332,6 +332,22 @@
332
332
 
333
333
 
334
334
 
335
+ ## accepts~で同じエラーが発生している記事を発見
336
+
337
+ [Rails fields_for と accepts_nested_attributes_for を使うときの注意点](https://acchann.hatenablog.com/entry/2018/03/16/224300)
338
+
339
+ それって書き方変えただけじゃないの?というような内容ですが、わらにもすがる思いで真似してみましたが、結果変わらず。
340
+
341
+ 内容を要約すると、
342
+
343
+ - 子要素のモデルを作って送れているか?
344
+
345
+ - accepts~のあとに記述したものと、field_forでつけたキー名が一致しているか?
346
+
347
+ 子要素のモデルに関してはfield_forのところで定義されていたので、私が親コントローラのnewアクションのところで記述していたものを同じように書いてためしました。念の為。
348
+
349
+
350
+
335
351
  ### 追記 シンプルな疑問
336
352
 
337
353
  accepts〜の記述を受け付けないという事象は(原因は何にせよ、一般的に)そもそも発生し得ることなのでしょうか?

3

追記の修正

2020/05/17 21:47

投稿

shota-imoto
shota-imoto

スコア37

test CHANGED
File without changes
test CHANGED
@@ -334,12 +334,12 @@
334
334
 
335
335
  ### 追記 シンプルな疑問
336
336
 
337
- accepts〜の記述を受け付けないという事象は原因は何にせよ発生ることなのでしょうか?
337
+ accepts〜の記述を受け付けないという事象は(原因は何にせよ、一般的に)そもそも発生し得ることなのでしょうか?
338
-
338
+
339
- それとも○○Gemをbundle installしていないと機能しない、versionX.Xでは機能しない、など一定の条件下では反応しないことがありうるのでしょうか。
339
+ 例えば○○Gemをbundle installしていないと機能しない、versionX.Xでは機能しない、など一定の条件下では反応しないことがありうるのでしょうか。
340
340
 
341
341
  あり得る場合、エラーは発生するのでしょうか?それとも今起きているようにエラーは発生せず無視されるものなのでしょうか。
342
342
 
343
343
 
344
344
 
345
- 解決に直接至らなくてもそのあたりの切り分けができる情報があれば教えていただきたいと思っています。
345
+ 解決に直接至らなくてもそのあたりの切り分けがしたいの情報があれば教えていただきたいと思っています。

2

追記

2020/05/17 02:15

投稿

shota-imoto
shota-imoto

スコア37

test CHANGED
File without changes
test CHANGED
@@ -329,3 +329,17 @@
329
329
 
330
330
 
331
331
  フォームオブジェクトという初心者にはハードル高そうなものを使えば、accepts_nested~を使わなくても実装できるようなので、一度チャレンジしてみます。
332
+
333
+
334
+
335
+ ### 追記 シンプルな疑問
336
+
337
+ accepts〜の記述を受け付けないという事象は原因は何にせよ発生することなのでしょうか?
338
+
339
+ それとも○○Gemをbundle installしていないと機能しない、versionX.Xでは機能しない、など一定の条件下では反応しないことがありうるのでしょうか。
340
+
341
+ あり得る場合、エラーは発生するのでしょうか?それとも今起きているようにエラーは発生せず無視されるものなのでしょうか。
342
+
343
+
344
+
345
+ 解決に直接至らなくてもそのあたりの切り分けができる情報があれば教えていただきたいと思っています。

1

「試したこと」の追記

2020/05/17 02:09

投稿

shota-imoto
shota-imoto

スコア37

test CHANGED
@@ -1 +1 @@
1
- 1つのフォームで複数のモデル生成したいが、accepts_nested_attributes_forが機能せずキー名が正しく表示されない
1
+ つのフォームで親レコードと複数の子レコード保存したいが、accepts_nested_attributes_forが機能せずキー名が正しく表示されない
test CHANGED
@@ -4,6 +4,10 @@
4
4
 
5
5
  一つのフォームでアソシエイトが組まれた2つのモデルを生成したい。
6
6
 
7
+ タイトルの通り、accepts_nested_attributes_forが正しく機能してくれません。
8
+
9
+ そこさえ解決すればあとは問題なく実装できると踏んでいます。
10
+
7
11
 
8
12
 
9
13
  ### 発生している問題・エラーメッセージ
@@ -144,97 +148,7 @@
144
148
 
145
149
  .chord-menu__key
146
150
 
147
- .key__key-display
151
+ // 中略
148
-
149
- = key_f.text_field :name, value: "key of G"
150
-
151
- .key__key-display--now
152
-
153
- key of G
154
-
155
- .key__key-display--relative-key
156
-
157
- 移動ド
158
-
159
- .chord-menu__key--palettes
160
-
161
- .palettes__section
162
-
163
- .palettes__palette.palettes__palette--one
164
-
165
- 移動ド
166
-
167
- .palettes__section
168
-
169
- .palettes__palette.palettes__palette--four
170
-
171
- G
172
-
173
- .palettes__palette.palettes__palette--four
174
-
175
- A
176
-
177
- .palettes__palette.palettes__palette--four
178
-
179
- B
180
-
181
- .palettes__palette.palettes__palette--four
182
-
183
- C
184
-
185
- .palettes__section
186
-
187
- .palettes__palette.palettes__palette--four
188
-
189
- D
190
-
191
- .palettes__palette.palettes__palette--four
192
-
193
- E
194
-
195
- .palettes__palette.palettes__palette--four
196
-
197
- F
198
-
199
- .palettes__section
200
-
201
- .palettes__palette.palettes__palette--three
202
-
203
- m
204
-
205
- .palettes__palette.palettes__palette--three
206
-
207
- \#
208
-
209
- .palettes__palette.palettes__palette--three
210
-
211
-
212
-
213
- .palettes__section
214
-
215
- .palettes__palette.palettes__palette--one
216
-
217
- 閉じる
218
-
219
- =key_f.label :instrumental, class: "class--element" do
220
-
221
- = key_f.check_box :instrumental, checked_value: "1", unchecked: "0"
222
-
223
- インストキー
224
-
225
- =key_f.label :male, class: "class--element" do
226
-
227
- = key_f.check_box :male, checked_value: "1", unchecked: "0"
228
-
229
- 男声キー
230
-
231
- =key_f.label :female, class: "class--element" do
232
-
233
- = key_f.check_box :female, checked_value: "1", unchecked: "0"
234
-
235
- 女声キー
236
-
237
- .form--btn
238
152
 
239
153
  = f.submit "登録"
240
154
 
@@ -346,8 +260,72 @@
346
260
 
347
261
  これからfields_for以外の方法を試すつもりです。
348
262
 
349
- かれこれ6時間ほど詰まっているので教えていただけると幸いです。
263
+ かれこれ12時間ほど詰まっているので教えていただけると幸いです。
350
264
 
351
265
 
352
266
 
353
267
  よろしくお願いいたします。
268
+
269
+
270
+
271
+
272
+
273
+ ### 追記 試したこと
274
+
275
+ 別画面で実装した際にも同様にaccepts_nested_attributes_forコマンドが機能しませんでした。
276
+
277
+ いっそ、フォームの方でごまかしせないか?と考えviewファイルを変更しました。field_forで送るキー名を変更してみました。
278
+
279
+
280
+
281
+ ※別画面に実装しようとした際には、違うモデルを使っていますが混乱を避けるため、この質問で用いられるモデルに書き換えて、結果を表記します
282
+
283
+
284
+
285
+ viewファイル
286
+
287
+ ```haml
288
+
289
+ //略
290
+
291
+ .form__key
292
+
293
+ =f.fields_for :keys_attributes do |key_f|
294
+
295
+ //略
296
+
297
+ ```
298
+
299
+ ストロングパラメータsong_paramsの出力は以下の通りです。
300
+
301
+ ```ターミナル
302
+
303
+ <ActionController::Parameters {"title"=>"why did you wonder", "jam"=>"0", "standard"=>"1", "beginner"=>"1", "keys_attributes"=><ActionController::Parameters {"name"=>"key of G", "instrumental"=>"0", "male"=>"1", "female"=>"0"} permitted: true>} permitted: false>
304
+
305
+
306
+
307
+ ```
308
+
309
+
310
+
311
+ すると別のエラーメッセージが表示されました。
312
+
313
+ ![エラー画像](cddfd784f4ed26d5f7de01c1624e9d5f.png)
314
+
315
+ @tuning_allの行が
316
+
317
+ ```
318
+
319
+ @song = Song.new(song_params)
320
+
321
+ # 親レコードの
322
+
323
+ ```
324
+
325
+ にあたります。変数の型とは違う型を代入している際にでるエラーのようです。
326
+
327
+ accepts_nested_attributes_forは表面的に表示を変える以上の働きをしているのかな?と考えました。
328
+
329
+
330
+
331
+ フォームオブジェクトという初心者にはハードル高そうなものを使えば、accepts_nested~を使わなくても実装できるようなので、一度チャレンジしてみます。