2012-07-09 27 views
5

Używam klejnotu simple_form.Dodaj dodatkowe dane do wprowadzenia simple_form

jestem rendering wejście oparte na zbiorze (wykaz wszystkich moich actiontypes)

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

Chciałbym, aby móc dodać danych atrybutu do wejścia do przechowywania dodatkowych danych.

W tym przypadku chcę zapisać atrybut impacts_pnl mojego actiontype. Jedynym problemem jest to, że nie wiem, w jaki sposób odnoszą się do bieżącego actiontype

collection.impacts_pnl nie działa (oczywiście)

actiontype.impacts_pnl ani.

Jak mogę przekazać ten dodatkowy bit danych do mojego wejścia?

Odpowiedz

14

Jeśli chcesz dodać te atrybuty do elementów opcji pola wyboru, zmień kolekcję, używając na przykład funkcji .map(). Aby to zrobić, użyj pomocnika wejściowego z blokiem, w przeciwnym razie nie działa;

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

Aby uzyskać więcej informacji na temat tego problemu, patrz https://github.com/plataformatec/simple_form/issues/188

+0

dzięki, ja brakowało części, w której trzeba podać 'f.select' jako część bloku! – Pierre

+0

A jak miałem klasę '