2009-08-09 10 views
11

In una vista che ho, sto usando fields_for per visualizzare i dati del modulo per una tabella relazionale. Tuttavia, parte di questo modulo avrà elenchi selezionati tra cui scegliere. Vedo che ci sono label, text_field, text_area helpers per il form_for e fields_for helpers che riempiranno le informazioni necessarie da un oggetto modello già popolato ... ma che dire di un helper lista di selezione che farà lo stesso?: campi_per selezionare

Ciò sarebbe particolarmente utile per quando ho una relazione uno-a-molti poiché fields_for iterates attraverso ogni elemento che è già nell'oggetto modello e lo visualizza con un indice.

Esiste qualcosa del genere?

risposta

28

Esistono diversi metodi di supporto di selezione che è possibile utilizzare. Il più comune è collection_select. Ciò è utile se si dispone di un'associazione belongs_to sul modello e si desidera utilizzare un menu di selezione per impostarlo.

<%= f.collection_select :category_id, Category.all, :id, :name %> 

Per altri casi v'è il metodo più generico select. Qui puoi fornire una serie di opzioni che desideri fornire.

<%= f.select :priority, [["Low", 1], ["Medium", 2], ["High", 3]] %> 

Il primo valore in ciascun elemento dell'array è il nome dell'opzione di selezione, il secondo è il valore che verrà assegnato all'attributo.

Ci sono molti altri menu di selezione (per le date e le ore) ma i due precedenti dovrebbero coprire la maggior parte delle situazioni. Questi metodi funzionano su entrambi form_for o fields_for.

2

Si sta cercando select o collection_select. Entrambi possono essere utilizzati in form_for o fields_for blocks. Esistono esempi su come utilizzarli in un form_for nella documentazione