2013-03-06 3 views
16

mio tag:Rails tag select valore selezionato

<%= select_tag(:option, options_for_select([['All', 1], ['Co', 2], ['Bought', 3], ['View', 4], ['Top API', 5], :selected => :option ])) %> 

Come faccio a impostare il valore selezionato al quale opzione è selezionata. Ad esempio, se si seleziona ['Bought', 3] e si invia, l'opzione ['All', 1] è selezionata. Come posso visualizzare il valore selezionato dopo che il modulo è stato inviato.

+0

Se si seleziona '[ 'Comprato', 3]' nel browser e poi invia, dove vedi che '['All', 1]' è stato selezionato? Puoi mostrare il resto del modulo e il codice del controller rilevante per l'azione del modulo? – PinnyM

+0

Le opzioni sono chiuse (']') nel posto sbagliato, quindi il browser vede ': selected =>: option' come una opzione. Risolvendo il problema, puoi aggiornare il browser e l'opzione selezionata rimarrà selezionata. – gabrielhilal

risposta

25

avete fatto tutto bene, basta chiudere le opzioni ] prima della :selected => :option:

invece di ...], selected: :option ])), passare alla ...]], selected: :option))

Quindi, il tuo codice dovrebbe essere:

<%= select_tag(:option, options_for_select([['All', 1], ['Co', 2], ['Bought', 3], ['View', 4], ['Top API', 5]], selected: :option)) %> 
+1

Come si specifica quale valore è selezionato? – 0112

10

Prova questo:

<%= select_tag(:option, options_for_select([['All', 1], ['Co', 2], ['Bought', 3], ['View', 4], ['Top API', 5]], :selected => params[:option])) %> 

Questo funziona perfettamente in Rails 4.2

1

Nel caso in cui si desidera aggiungere una classe al tag:

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

Worrking in rotaie 5.