如何从Rails 3哈希中生成下拉列表选项?
- 内容介绍
- 文章标签
- 相关推荐
本文共计304个文字,预计阅读时间需要2分钟。
在Rails 3中,从哈希创建Dropdown的方法如下:
rubyclass User
使用select_tag和options_from_collection_for_select生成Dropdown
在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将在您给出的对象(此处为User.genders)和每个对象上的两个方法(第一个和最后一个)上调用each.它大致相当于这样的东西:
User.genders.each do |object| output << "<option value=#{object.first.inspect}>#{h object.last}</option>" end
当你调用each on a Hash时,它会产生一个Array的两个值(键和值).可以使用第一种和最后一种方法检索这些值.
本文共计304个文字,预计阅读时间需要2分钟。
在Rails 3中,从哈希创建Dropdown的方法如下:
rubyclass User
使用select_tag和options_from_collection_for_select生成Dropdown
在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将在您给出的对象(此处为User.genders)和每个对象上的两个方法(第一个和最后一个)上调用each.它大致相当于这样的东西:
User.genders.each do |object| output << "<option value=#{object.first.inspect}>#{h object.last}</option>" end
当你调用each on a Hash时,它会产生一个Array的两个值(键和值).可以使用第一种和最后一种方法检索这些值.

