2011-12-22 6 views
1

私はベンダーのリストを持っています。コレクション属性を使用して、それらをformtastic selectメニューに入れる必要があります。 IDの値と会社名のラベルが必要です。Rubyは、id => company_nameの配列またはハッシュをfind(:all)クエリから作成します

私はこの: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> 

のようなものを与えるだろうと私はあなたがidと名前が含まれているミニ配列に各ベンダーをマッピングすることができます

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

答えて

2

が必要になります。

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

と表示されます。これは、" select "=>あなたが会社名を取得しているためです。私は適切に更新します。 –

関連する問題