2009-05-05 17 views

Respuesta

48

Así como Schrockwell ha dicho:

Hash.each |a| devuelve una matriz de la forma a = [key, value], por lo que para el hash @status_fields puede escribir:

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

Alternativamente, si desea que la clave para aparecer en la lista de selección y el punto de valor a la lista de selección de valor, entonces:

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 

Esto seleccionará la opción dada por thing.status o nada Si se devuelve nil

Si sólo quiere crear cualquier selección no atada a un objeto utilizar

<%= select_tag('name', options_from_collection_for_select(@status_fields, :first, :last, '2')) %> 

donde '2' es el índice de la selección deseada

PD: No tengo suficiente reputación para simplemente modificar la publicación original o comentar en ella

+2

o use <% = select_tag ('name', options_for_select ([["Dollar", "$"], ["Kroner", "DKK"]])%> – montrealmike

7

El select helper method aceptará un hash en el formato { text_displayed_in_select => select_value }, por lo que probablemente querrá invert ese hash.


8

que podría hacer algo como

select "foo", "bar", @hash_object 

o

select "foo", "bar", @hash_object.map { |h| [h.key, h.value] } 

probablemente me invertir la almohadilla primero en hacer el punto clave para el valor

4

Hash.each |a| devuelve una matriz del formulario a = [key, value], por lo que para el hash @status_fields puede escribir:

<%= collection_select('thing', 'status', @status_fields, :first, :last) %> 

Alternativamente, si desea que la clave para aparecer en la lista de selección y el punto de valor a la lista de selección de valor, entonces:

<%= collection_select('thing', 'status', @status_fields, :last, :first) %> 
+0

Entonces, ¿cómo le diría entonces el valor seleccionado? Esto no parece recogerlo. –

+0

La documentación indica que "Se seleccionará el valor devuelto por el método de llamada en el objeto de instancia". Entonces, en lugar de pasar 'thing' como primer argumento, intente pasar la instancia real del objeto @thing. – Schrockwell

Cuestiones relacionadas