2012-02-02 23 views
50

Sto usando la gemma simple_form, ho una raccolta di paesi, funziona bene quando seleziono il paese, e il record aggiornato avrà l'ID del paese memorizzato, ma, quando provo a modificare il record, il paese scelto non è selezionato da predefinito al modulo di modifica.rails, simple_form, come impostare l'indice selezionato di una raccolta quando la pagina è stata caricata?

Ecco il codice al modulo di modifica:

= f.input :country_id, :collection => all_countries 

Non dovrebbe simple_form visualizzare il paese selezionato dal db?

+0

> Non dovrebbe semplice_forma visualizzare il paese selezionato dal db? Dovrebbe perché simple_form è solo un wrapper attorno ai form_for di rails per gli helper. Controlla il tuo html generato per vedere se non ci sono opzioni selezionate nel codice. – Ineu

+0

Penso che sarebbe utile se questa domanda non usasse il termine "default". Quando vedo che penso che stai parlando di ciò che l'elemento selezionato sarebbe quando non hai selezionato nulla prima, non quando hai memorizzato qualcosa e torna alla pagina. – cesoid

+0

sì, l'ho risolto, ma la domanda è diventata un po 'più lunga :) – simo

risposta

117

Hai provato a utilizzare l'opzione: selected =>?

:selected => selected_country_id 

Quindi,

= f.input :country_id, :collection => all_countries, :selected => selected_country_id 

Questo funziona perfettamente !!!

Cheers!

+0

ie '= f. input: country_id,: collection => all_countries,: selected => selected_country_id' –

+2

Questo non sembra funzionare quando: include_blank è impostato su true. Questo potrebbe essere un bug? – Remo

+0

Funziona con @Remo testare correttamente il codice. –

7

So che è stata data una risposta, ma sono venuto qui cercando una soluzione simile per una raccolta di caselle di controllo. Per i posteri, ecco come lo fai:

<%= f.input :country_ids, :as => :check_boxes, :collection => [['USA', :USA], ['Japan', :JPN]], :checked => [:JPN], :include_hidden => false %> 

Spero che questo aiuti qualcuno.

Problemi correlati