W jaki sposób radzicie sobie z formularzami składającymi się z wielu „stron”?
Chodzi mi o „skompletowanie” obiektu powiązanego z kilkoma innymi obiektami wybieranymi przez użytkownika w kolejnych krokach.
Dość niejasno się wyraziłem ale lepiej nie potrafię tego sformułować.
Np. W pierwszym kroku użytkownik wybiera klienta (pierwsza strona) w drugim usługodawcę a w trzecim wypełnia kilka pól.
Np w sesji trzymasz zbierane z formularza powoli dane, albo robisz jeden formularz, który po wypełnieniu pól na górze z autoamtu (Ajax) się zmienia i przeładowuje (pojawia) i masz to jako jeden. Jak go obsłużyć RayanB z 10 odcinków temu.
W jednym z projektów, w których uczestniczę multi-step form został zaimplementowany z użyciem pluginu/gema aasm, który w railsach 3 ma być już wbudowany w ActiveRecord (http://blog.envylabs.com/2009/08/the-rails-state-machine/). Poszczególne ‘porcje’ formularza mapowane są na stany modelu, dzięki czemu dane zachowywane są w bazie na każdym etapie.
Do walidacji używamy validation groups - http://github.com/akira/validationgroup
AASM może tutaj się sprawdzić. Stan to kolejny etap. Model w pierwszym etapie tworzysz w akcji new/create. Następnie do każdego kolejnego etapu masz odpowiednią akcję ala edit. Każda z nich wysyła formularz do update. W update masz już model w określonym stanie, więc możesz wygenerować przekierowanie do kolejnej akcji edit.
Walidacje - możesz użyć opcji :if/:unless => lambda { |model| model.license_agreement_signed? } aby wyłączyć/włączyć niektóre na określonych etapach.