2012-07-11 15 views
18

Ho il seguente pezzo di codicePartita un'opzione in select form con valori booleani

%br 
= f.label :active, 'Status' 
= f.select :active, ['Active','Inactive'] 

Simbolo: attiva è un tipo booleano var. Come posso associare Active => 1/True e Inactive => 0/False, per l'aggiunta del database.

Ci scusiamo per la domanda per principianti, ma non riesco a capirlo.

risposta

44

È possibile fornire una coppia di valori per ogni opzioni: in primo luogo sarà usato come etichetta (testo interno del <option> tag), la seconda sarà usato come attributo value:

= f.select :active, [['Active', true], ['Inactive', false]] 

Sarà rendere qualcosa come:

<select name="model[active]"> 
    <option value="true">Active</option> 
    <option value="false">Inactive</option> 
</select> 

Dai un'occhiata alla la documentazione per select e options_for_select.

3

Una piccola estensione della risposta precedente, se si utilizza un menu a discesa.

Avevo bisogno di usare "options_for_select." Inoltre, ": selected" memorizza il valore per la prossima volta che si ritorna al modulo.

<%= f.select(:active, options_for_select([['Active', true], ['Inactive', false]], {:selected => @symbol.active}),:prompt => "Select") %>