/ / Woking z zagnieżdżonymi formularzami w szynach - ruby-on-rails

Woking z zagnieżdżonymi formami w szynach - ruby-on-rails

Mam 3 modele

Firma
has_many: departments

Departament
has_many: role
belongs_to company

Rola
belongs_to: department

Próbuję utworzyć dynamiczną stronę, która przyjmuje nazwę firmy, n liczbę działów, które użytkownik dodaje dynamicznie (renderowanie takie same częściowe jak przy kliknięciu przycisku) oraz liczba ról w każdym dziale (renderowanie takie same częściowe jak przy kliknięciu przycisku). Chcę zadzwonić jak

form_for :company do |f|

= department_partial (renderowane n razy dla każdego użytkownika), zawierające formularz działu

form_for :department do |f|

= role_partial (renderowane n razy dla każdego użytkownika), zawierające formularz ról

form_for :role do |f|

tak, że po kliknięciu Zapisz raz, aby zadzwonić CompaniesController # Utwórz

Otrzymuję takie parametry

{"company" => {"name" => "somename",
"department1" => {"name" => "somename", "role" => [{"name" => "R1"}, {"name" => "R2"}]},
"department2" => {"name" => "somename", "role" => [{"name" => "R1"}, {"name" => "R2"}, {"name" => " R3 "}]}}

UWAGA

1> Każdy dział może powtarzać te same role, ale ma odrębny dział.
2> Nic nie zostanie zapisane, zanim kliknę Zapisz

Odpowiedzi:

1 dla odpowiedzi № 1

Proszę sprawdzić klej nested_form

Być może Twój widok będzie wyglądał mniej więcej tak:

<%= nested_form_for @company do |comp| %>

<!--  pick the company attributes -->

<%= comp.fields_for :departments do |department| %>
<%= department.text_field :name %>

<%= department.fields_for :roles do |role| %>
<!-- Pick your role attributes  -->
<% end %>

<% end %>
<% end %>

Popatrz na to przykładowy kod. to ci pomoże :) Sprawdź następujące filmy railscast:

http://railscasts.com/episodes/196-nested-model-form-part-1

i

http://railscasts.com/episodes/197-nested-model-form-part-2