0

これは質問ではありませんが、誰かが恩恵を受けることができれば幸いです。

1 対多のネストされた関連付けを作成または変更しようとするときは、配列を渡していることを確認してください。あなたが得ている場合

NoMethodError (未定義のメソッド `[]' for...

1対多のネストされた関連付けを使用している場合、これが問題になる可能性があります。このエラーを検索しても説明が見つからなかったので、他の人の開発をスピードアップするのに役立つかもしれません。

たとえば、私は Person モデルを持っています

has_many :person_images
accepts_nested_attributes_for :person_images

新しい人物と関連付けられた person_image を作成するには、次のようにします。

@person = Person.create(:full_name=>@person_name, :person_images_attributes=>[{:image=>person_image}])

{:image=>person_image} の周りの [] に注目してください。1対多の場合は、これが必要です。したがって、以下は機能せず、未定義のメソッド '[]' エラーが発生します。

@person = Person.create(:full_name=>@person_name, :person_images_attributes=>{:image=>person_image})

また、私の意見では、このように入力に名前を付ける必要があります

<input type="file" name="person[person_images_attributes][0][image]">

[0] がないと機能しません。

私はRailsが初めてです。これが他の初心者に役立つことを願っています。誰かがこれを行うためのより良い説明またはより効率的な方法を持っている場合は、コメントに感謝します.

詳細については、入れ子になった属性の Rails API を参照してください。

4

1 に答える 1