joj*_*ojo 3 hash ruby-on-rails-3 drop-down-menu
在rails 3中,如何从哈希创建Dropdown
我的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
那么创建下拉列表的正确方法是什么?
谢谢
这应该工作:
<%= f.collection_select :gender, User.genders, :first, :last %>
编辑:说明:
collection_select将调用each您给出的对象(User.genders此处)以及每个对象上的两个方法(first和last此处).它大致相当于这样的东西:
User.genders.each do |object|
  output << "<option value=#{object.first.inspect}>#{h object.last}</option>"
end
当你调用eachHash时,它会产生Array两个值(键和值).可以使用first和last方法检索这些值.