2012-07-09 19 views
5

Estoy usando la gema simple_form.Agregue datos adicionales a la entrada simple_form

Estoy prestando una entrada sobre la base de una colección (una lista de todos mis actiontypes)

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

Me gustaría ser capaz de añadir un atributo de datos a la entrada para almacenar datos adicionales.

En este caso, quiero almacenar el atributo impacts_pnl de mi actiontype. El único problema es que no sé cómo hacer referencia a la corriente actiontype

collection.impacts_pnl no funciona (obviamente)

actiontype.impacts_pnl ninguno.

¿cómo puedo pasar este bitito extra a mi entrada?

Respuesta

14

Si desea agregar estos atributos a los elementos de opción de un campo de selección, debe modificar la colección utilizando, por ejemplo, la función .map(). Además, use el helper de entrada con bloque para hacer esto, de lo contrario, no funciona;

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

Para obtener más información sobre este tema, véase https://github.com/plataformatec/simple_form/issues/188

+0

gracias, me había perdido la parte donde tiene que especificar el 'f.select' como parte de un bloque! – Pierre

+0

¿Y cómo tengo una clase para los elementos '