2012-06-11 12 views
16

Mam wybierz pole i chcę umieścić atrybut niestandardowy co się nazywa nazwa, starałem się zrobić to tak:Szyny prosty formularz niestandardowy stowarzyszenie Wybierz pole

<%= f.association :in_charge, :collection => User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %>  

To działa i generuje dodatkowy atrybut ale jest problem, atrybut select value zostaje zmieniony na atrybut nazwy modelu, w tym przypadku l.name. Zmieniłem miejsca i wstawiłem najpierw l.id, ale atrybut id jest wyświetlany, zostają zduplikowane, jakikolwiek pomysł, dlaczego tak się dzieje?

Czy istnieje inny sposób definiowania atrybutów niestandardowych w skojarzeniach wybierz pola?

Odpowiedz

24

Użyj pomocnika formularza Rails select(), owiniętego przez wejście SimpleForm.

<%= f.input :in_charge do %> 
    <%= f.select :county_id, User.lawyer.map{ |l| [l.name, l.id, {:name => l.name.downcase}] } %> 
<% end %> 

Twój kod nie działa zgodnie z oczekiwaniami, ponieważ pod maską, SimpleForm wzywa collection_select() który nie obsługuje dodatkowych atrybutów w znacznikach opcji.

Czytnik SimpleForm ma także solution. Ale nie zauważyłem tego, dopóki sam nie rozwiązałem problemu :)

Powiązane problemy