这不是一个问题,但希望有人可以从中受益。
当您尝试创建或修改一对多嵌套关联时,请确保您正在传递一个数组。如果你得到
NoMethodError(未定义的方法 `[]' for...
并且您正在使用一对多的嵌套关联,这可能是您的问题。在搜索此错误时,我没有找到对此的解释,因此也许这将有助于加快其他人的开发。
例如,我有一个 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 上的嵌套属性