2011-05-12 98 views
0

選項我有一個名爲Metadatum模型(傻,我知道),其中有兩個字段,keyvalue。一個鍵的前綴是它的類型,後跟一個下劃線。可能的類型是modifier_option_uom_(計算單元),然後接着是用戶定義鍵。例如:uom_ounce過濾器collection_select

我的Metadatum類方法定義的類型:

def parsed_key 
    self.key.split('_', 2).last 
end 

我的目標是:

def self.types 
    { 'Modifier' => 'modifier', 'Option' => 'option', 'Unit of Measure' => 'uom'} 
end 

我用這個實例方法從用戶定義鍵解析出我的靜態類型爲每種類型提供一個選擇框。以下是我正在試圖做的完成它:

<% Metadatum.types.each do |type| %> 
    <%= f.fields_for :item_metadata do |builder| %> 
     <%= cell((builder.label :fk_metadatum_id, type.first), (builder.collection_select(:fk_metadatum_id, Metadatum.where(["key LIKE ?", "%#{type.last}%"]).first, :id, :parsed_key, options ={:prompt => "- #{type.first}"})))%> 
    <% end %> 
<% end %> 

當我嘗試渲染頁面在瀏覽器中,我得到這個錯誤信息:

undefined method `map' for #<Metadatum:0x1c9c68b38> 

這裏是有問題的代碼:

Metadatum.where(["key LIKE ?", "%#{type.last}%"]).first, :id, :parsed_key, options ={:prompt => "- #{type.first}" 

本來,我用Metadatum.all代替了頁面,但這不是所期望的結果。

是否有一種簡單的方法來篩選選擇框的選項?

+0

那很簡單。我不得不從查詢中刪除'''.first'''。 – Jeff 2011-05-18 18:35:16

回答

0

無意識的編程錯誤。我的電話是.first。我刪除它,現在它可以工作。

+0

請記住接受你自己的答案 – corroded 2011-05-19 12:08:02