2010-08-03 11 views

risposta

93

Se si utilizza select_tag senza alcun altro aiuto, allora si può farlo in 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') 

Esempi da select_tag doc, options_for_select doc e da options_from_collection_for_select doc.

+0

Destra e la sua confusione perché la selezione del form builder accetta parametri diversi – Donato

0

un'altra opzione (nel caso in cui è necessario aggiungere attributi dei dati o altro)

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

Per 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"}) %> 

Per le opzioni da collezione per selezionare

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

Si noti che la il valore selezionato che si sta specificando deve essere di tipo valore. Ad esempio, se il valore è in formato intero, il parametro del valore selezionato dovrebbe essere anche intero.

0

sua già spiegato, cercherà di dare un esempio per ottenere la stessa cosa senza options_for_select

diamo l'elenco di selezione sia

select_list = { eligible: 1, ineligible: 0 } 

Quindi il codice seguente genera in

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

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

Così per rendere selezionata un'opzione predefinita, dobbiamo selezionare selezionato: valore.

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

se can_vote? restituisce true imposta selezionato: 1 quindi il primo valore verrà selezionato in secondo luogo.

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

se le opzioni di selezione sono solo una lista di array invece che hai poi la scelta sarà solo il valore da selezionare per esempio se

select_list = [ 'eligible', 'ineligible' ] 

ora la scelta sarà solo prendere

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

Prova questo:

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

funziona benissimo in binari 5.