在rails 3中,如何从哈希创建下拉列表
我在User类中有以下代码
class User
... other codes
key :gender, Integer # i use mongo db
class << self
def genders()
genders = {
'1' => 'Male',
'2' => 'Female',
'3' => 'Secret'
}
end
end
end
在用户表单中,我正在尝试创建性别下拉列表
<%= f.collection_select nil, :gender, User.genders, :key, :value %>
但它抱怨
undefined method `merge' for :value:Symbol
那么创建下拉列表的正确方法是什么?
由于
答案 0 :(得分:7)
这应该有效:
<%= f.collection_select :gender, User.genders, :first, :last %>
修改:说明:
collection_select
会在您提供的对象(此处为User.genders
)以及每个对象上的两个方法(first
和last
)上调用each
。它大致相当于这样的东西:
User.genders.each do |object|
output << "<option value=#{object.first.inspect}>#{h object.last}</option>"
end
当您致电each
on a Hash时,会产生Array
两个值(键和值)。可以使用first
和last
方法检索这些值。