我需要从哈希中可用的值创建一个选择框。Rails - 从对象哈希创建选择标记
举例来说,我有一个“东西”和“东西”有多种状态字段:
1 => 'State A'
2 => 'State B'
可以通过对事物的方法。
我该如何建立一个选择标签?
我需要从哈希中可用的值创建一个选择框。Rails - 从对象哈希创建选择标记
举例来说,我有一个“东西”和“东西”有多种状态字段:
1 => 'State A'
2 => 'State B'
可以通过对事物的方法。
我该如何建立一个选择标签?
正如Schrockwell说:
Hash.each |a|
返回形式a = [key, value]
的数组,所以对于哈希@status_fields
你可以写:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
另外,如果您想关键在选择列表和值点选择列表中值显示出来,然后:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>
这将选择通过thing.status或没有给出的选项如果无返回
如果你只想创建不依赖于对象的任何选择使用
<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %>
其中“2”是所需的选择的指数
PS:我没有足够的声望去修改原来的帖子或对它发表评论
select helper method将接受一个形式为{ text_displayed_in_select => select_value }
的散列,因此您可能需要invert散列。
你可以做类似
select "foo", "bar", @hash_object
或
select "foo", "bar", @hash_object.map { |h| [h.key, h.value] }
我可能会首先反转的哈希值,使关键点的值
Hash.each |a|
返回数组形式为a = [key, value]
,所以对于散列@status_fields
你可以写:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
另外,如果您想关键在选择列表中显示和值点选择列表中的值,则:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>
那么,我怎么会告诉它选定的值 - 这看起来并没有把它拿起来。 – 2009-05-05 14:20:30
该文档指出“将从实例对象的调用方法返回的值将被选中。”因此,不要将'thing'作为第一个参数传递,而是尝试传递对象@thing的实际实例。 – Schrockwell 2009-05-05 16:17:48