2012-10-07 69 views
1

我创造在我的模型虚拟属性:Rails的虚拟属性阵列

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 

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

+0

只是出于好奇,什么,当你输出@entities发生在页面上?按预期得到一个不错的数组? – Abram

+0

没试过,因为我在下面得到了答案。猜测我将不得不输出@ object.entities来让它工作。 – Jaijaz

回答

2

不能使用:entities作为集合:

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

这是行不通的。该错误指示简单窗体试图将参数:entities转换为导致错误的数组。

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

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

Brillant。谢谢。 – Jaijaz