HABTM i wiele selectów

Witam,

Problem jest następujący: posiadam pole select z wyborem kategorii nadrzędnej, pod którym poniżej znajdują się dodatkowe 4 takie pola z kategoriami podrzędnymi w zależności od wybranej nadrzędnej w pierwszym polu. Problem jest przy edycji. Nie wiem w jaki sposób wyświetlić te pola tak, aby były zaznaczone poprawne wartości które użytkownik ustawił przy dodawaniu obiektu. Nie wyświetlam tych selectów w pętli ‘for’ ponieważ pierwszy od pozostałych trzech jest oddzielony kilkoma innymi polami. Może poniższy kod rozjaśni mój enigmatyczny opis problemu:

<%= select(:item, :branch_ids, Branch.all(:order => "name", :conditions => [ "parent_id = ?", @item.branch_id]).collect { |p| [ p.name, p.id ] }, { :include_blank => true }, { :name => 'item[branch_ids][]' }) %>

Powyższy kod jest potem w innym miejscu zdublowany i tutaj jest meritum: jak to zrobić aby listy były te same w obu polach ale w każdym zaznaczona inna wartość, która się znajduje w join table “branches_items”?

Przychodzi mi na myśl jedno rozwiązanie, ale problem wydaje się trywialny i chciałbym wiedzieć jak to jest rozwiązane w tzw. “Rails Way”.

Wspólną część umieścić w zmiennej instancji kontrolera:

@branches = Branch.all(:order => "name", :conditions => [ "parent_id = ?", @item.branch_id]).collect { |p| [ p.name, p.id ] }

i w widoku

<%= select(:item, :branch_ids, @branches, { :include_blank => true }, { :name => 'item[branch_ids][]' }) %>

Teraz mam tak, że w każdym z trzech pól select mam taki kod:

[code=html]

branch 1 branch 2 branch 3[/code] A chciałbym właśnie, aby pierwszy select zawierał tą listę ale z "selected" pierwszej wartości, drugi tą samą listę ale z opcją "selected" przy drugiej wartości itd.

Jest na to jakieś rozwiązanie?

i masz te wartości w bazie danych już zapisane, które mają być zaznaczone? Jak tak to zwyczajnie, wyciągnij z bazy które to i dodaj parametr do select.

OK, poradziłem sobie, dzięki!