Rails – 从对象哈希创建选择标记
我需要从哈希中可用的值创建一个选择框。
例如,我有一个’东西’,而’东西’有各种各样的状态字段:
1 => 'State A' 2 => 'State B'
可以通过物品上的方法获得。
如何从中构建选择标记?
就像施罗克威尔所说:
Hash.each |a|
返回一个forms为a = [key, value]
的数组,因此对于hash @status_fields
你可以写:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
或者,如果您希望键显示在选择列表中,并且值指向选择列表值,则:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>
这将选择thing.status给出的选项,如果返回nil,则不选择任何内容
如果您只想创建任何与对象无关的选择
<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %>
其中’2’是所需选择的索引
PS:我没有足够的声誉来修改原帖或评论
你可以做点什么
select "foo", "bar", @hash_object
要么
select "foo", "bar", @hash_object.map { |h| [h.key, h.value] }
我可能会首先反转你的哈希,使关键指向值
select helper方法将接受{ text_displayed_in_select => select_value }
forms的哈希,因此您可能希望反转该哈希。
Hash.each |a|
返回一个forms为a = [key, value]
的数组,因此对于hash @status_fields
你可以写:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
或者,如果您希望键显示在选择列表中,并且值指向选择列表值,则:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>