I need to create a select box from the values available in a Hash.
For instance, I have a 'thing' and the 'thing' has a variety of status fields:
1 => 'State A'
2 => 'State B'
available via a method on thing.
How can I build a select tag from this?
Just as Schrockwell has said:
Hash.each |a|
returns an array of the form a = [key, value]
, so for the hash @status_fields
you can write:
<%= collection_select('thing', 'status', @status_fields, :first, :last) %>
Alternatively, if you'd like the key to show up in the select list and the value point to the select list value, then:
<%= collection_select('thing', 'status', @status_fields, :last, :first) %>
This will select the option given by thing.status or nothing if nil is returned
If you want to just create any selection not tied to an object use
<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %>
where '2' is the index of the desired selection
PS: I don't have enough reputation to just amend the original post or comment on it
you could do something like
select "foo", "bar", @hash_object
or
select "foo", "bar", @hash_object.map { |h| [h.key, h.value] }
I'd probably invert your hash first to make the key point to the value
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With