Это не вопрос, но, надеюсь, кто-то может извлечь из этого пользу.
Когда вы пытаетесь создать или изменить вложенную связь «один ко многим», убедитесь, что вы передаете массив.
Если вы получаете
NoMethodError (неопределенный метод `[] 'для ...
и вы работаете с вложенной ассоциацией один-ко-многим, это может быть вашей проблемой.
Я не нашел объяснения этому при поиске этой ошибки, так что, возможно, это поможет ускорить чью-либо разработку.
Например, у меня есть модель 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}. Если у вас есть один ко многим, вы должны иметь это. Таким образом, следующее не работает и приводит к ошибке неопределенного метода '[]'.
@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 для вложенных атрибутов