2

我的模型看起来像这样(对于这个问题,精简到最低限度):

class Translation < ActiveRecord::Base
  has_many :array_resources
end
class ArrayResource < ActiveRecord::Base
  attr_accessible :array_items
  has_many :array_items
  accepts_nested_attributes_for :array_items
end

现在,在我的Translation模型中,我有一个调用方法array_resources.build(params),其中params是一个哈希数组,其中每个哈希还包含一个:array_items键,映射到另一个哈希数组。

不幸的是,我收到以下错误:

ProjectsController#create 中的 ActiveRecord::AssociationTypeMismatch

ArrayItem(#69835262797660) 预期,得到 Hash(#18675480)

我读到的所有其他答案都谈到了使用accepts_nested_attributes_for,但我已经这样做了。帮助?

4

1 回答 1

2

您不应该array_items直接分配给嵌套属性,而是array_items_attributes.

您应该可以:array_items_attributes访问:

class ArrayResource < ActiveRecord::Base
  attr_accessible :array_items_attributes

然后在您的参数哈希中使用 key:array_items_attributes而不是:array_items.

于 2012-05-23T19:33:06.570 回答