2012-07-09 18 views
5

Sto utilizzando la gemma simple_form.Aggiungi dati aggiuntivi a un input simple_form

sto rendendo un ingresso sulla base di una collezione (un elenco di tutta la mia actiontypes)

<%= f.association :actiontype, collection: Actiontype.all, input_html: { data: {'impacts-pnl' => ??}} %> 

Mi piacerebbe essere in grado di aggiungere un data-attributo per l'ingresso per memorizzare i dati aggiuntivi.

In questo caso, voglio memorizzare l'attributo impacts_pnl del mio actiontype. L'unico problema è che non so come fare riferimento alla corrente actiontype

collection.impacts_pnl non funziona (ovviamente)

actiontype.impacts_pnl nessuno dei due.

Come posso passare questo bit di dati in più al mio input?

risposta

14

Se si desidera aggiungere questi attributi agli elementi opzione di un campo di selezione, è necessario modificare la raccolta utilizzando, ad esempio, la funzione .map(). Inoltre, usa l'helper di input con block per farlo, altrimenti non funziona;

= f.input :actiontype do 
    = f.select :actiontype, Actiontype.all.map{|a| [a.name, a.id, {"data-impacts-pnl" => p.impacts_pnl}]} 

Per ulteriori informazioni su questo problema, vedere https://github.com/plataformatec/simple_form/issues/188

+0

grazie, avevo perso la parte in cui è necessario specificare il 'f.select' come parte di un blocco! – Pierre

+0

E come ho avuto una classe per '