選項我有一個名爲Metadatum
模型(傻,我知道),其中有兩個字段,key
和value
。一個鍵的前綴是它的類型,後跟一個下劃線。可能的類型是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
代替了頁面,但這不是所期望的結果。
是否有一種簡單的方法來篩選選擇框的選項?
那很簡單。我不得不從查詢中刪除'''.first'''。 – Jeff 2011-05-18 18:35:16