Multi-step form

Witam

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.

Dziękuję za pomoc.

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.

A macie jakies patenty jak go walidować ładnie po każdym kroku.

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.

Przy większych i skomplikowanych Wizardach polecam powiązanie Aasm z Presenter.em

Trochę tekstu http://jamesgolick.com/2008/7/27/introducing-activepresenter-the-presenter-library-you-already-know.html i dostępny gem na http://github.com/jamesgolick/active_presenter
Można też w ten sposób http://blog.new-bamboo.co.uk/2007/8/31/presenters-conductors-on-rails

Jest tez kilka gotowych rozwiązań na http://github.com/search?langOverride=Ruby&q=wizard&type=Repositories&x=0&y=0

Artur kiedyś walczył z multi-stage’owym forumularzem (w Solaris Gate zresztą ) i zrobił mu się z tego taki plugin: http://github.com/seeweer/multi_stage_form

Racja ale to nie jest jeszcze skonczone. Mozesz sie na tym wzorowac. Musze do tego usiasc i skonczyc :smiley: