2011-12-22 22 views
1

我有一个供应商列表。我需要使用集合属性将它们放在一个formtastic选择菜单中。我需要将这些值作为id和标签作为公司名称。Ruby从find(:all)查询创建一个数组或散列,id => company_name

我有这个:as => :select, :collection => Vendor.find(:all, :order => "company_name", :select => "company_name").map(&:company_name)但会给我喜欢

<option value="Company A">Company A</option> 
<option value="Company B">Company B</option> 

东西,我需要

<option value="1">Company A</option> 
<option value="2">Company B</option> 

回答

2

可以每个供应商映射到一个包含ID和名称的小型阵列:

Vendor.all(:order => "company_name", :select => "vendors.id, vendors.company_name").map{|v| [v.company_name, v.id] } 

在这种情况下,“供应商”不是绝对必要的,但如果您将t他与其他查询(例如my_product.vendors.all(:select => ...))它会混淆如果你没有指定你想要的ID。

+0

是的,它是反向的[v.company_name,v.id]'。我确实得到了company_name,但是,我得到的是空白而不是id,它只是说'

+0

ok,那是因为“select”=>你只是提取公司名称。我会适时更新。 – 2011-12-22 23:36:41

相关问题