2010-08-03 16 views

Respuesta

93

Si está utilizando select_tag sin ningún otro ayudante, a continuación, puede hacerlo en html:

select_tag "whatever", "<option>VISA</option><option selected=\"selected\">MasterCard</option>" 

O con options_for_select:

select_tag "whatever", options_for_select([ "VISA", "MasterCard" ], "MasterCard") 

O con options_from_collection_for_select:

select_tag "people", options_from_collection_for_select(@people, 'id', 'name', '1') 

Los ejemplos son de select_tag doc, options_for_select doc y de options_from_collection_for_select doc.

+0

Correcto y es confuso porque el generador de formularios seleccionado acepta diferentes parámetros – Donato

0

otra opción (en caso de tener que añadir atributos de datos u otros)

= content_tag(:select) do 
    - for a in array 
    option data-url=a.url selected=(a.value == true) a.name 
1

Para options_for_select

<%= select_tag("products_per_page", options_for_select([["20",20],["50",50],["100",100]],params[:per_page].to_i),{:name => "products_per_page"}) %> 

Para las opciones de la colección para selecto

<%= select_tag "category","<option value=''>Category</option>" + options_from_collection_for_select(@store_categories, "id", "name",params[:category].to_i)%> 

Tenga en cuenta que la el valor seleccionado que está especificando debe ser de tipo valor. es decir, si el valor está en formato entero, entonces el parámetro de valor seleccionado también debe ser entero.

0

Su ya se ha explicado, trataremos de dar un ejemplo para lograr lo mismo sin options_for_select

vamos a la lista de selección sea

select_list = { eligible: 1, ineligible: 0 } 

Así el código siguiente produce en

<%= f.select :to_vote, select_list %> 

<select name="to_vote" id="to_vote"> 
    <option value="1">eligible</option> 
    <option value="0">ineligible</option> 
</select> 

Así para hacer una opción seleccionada por defecto debemos usar seleccionado: valor.

<%= f.select :to_vote, select_list, selected: select_list.can_vote? ? 1 : 0 %> 

if can_vote? devuelve verdadero establece seleccionado: 1 luego se seleccionará el primer valor else segundo.

select name="driver[bca_aw_eligible]" id="driver_bca_aw_eligible"> 
    <option value="1">eligible</option> 
    <option selected="selected" value="0">ineligible</option> 
</select> 

si las opciones de selección son sólo una lista matriz en lugar de hast entonces el elegido será sólo el valor a ser seleccionado por ejemplo si

select_list = [ 'eligible', 'ineligible' ] 

ahora el seleccionado acaba de tomar

<%= f.select :to_vote, select_list, selected: 'ineligible' %> 
0

Prueba esto:

<%= select_tag(:option, options_for_select([["Option 1",1],["Option 2",2],["Option 3",3]], params[:option]), class:"select") %> 

funciona muy bien en rieles 5.

Cuestiones relacionadas