选项我有一个名为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