Rails虚拟属性数组

时间:2012-10-07 00:42:49

标签: ruby-on-rails-3 model simple-form

我正在我的模型中创建一个虚拟属性:

def entities
  @entities = Array.new()
  @entities.push(self.contact.name)
  @entities.push(self.contact.partner.name) if self.contact.partner
  @entities.push('Joint') if self.contact.partner
  @entities
end

然后在我的表单中,我试图从嵌套数组中使用这个数组。我正在使用简单的表单,所以它看起来像这样

<%= f.input :ownership, collection: :entities, :include_blank => false, :label => false %>

然而,这给了我一个错误:

undefined method `to_a' for :entities:Symbol

如果我创建了一个数组,我不明白它为什么不作为数组渲染。我错过了什么?

1 个答案:

答案 0 :(得分:2)

您不能将:entities用作集合:

<%= f.input :ownership, collection: :entities ...%>

这不起作用。该错误表明Simple Form正在尝试将参数:entities转换为数组,这会导致错误。

你需要给它一个实际的集合:

<%= f.input :ownership, collection: @object.entities ... %>