I’m building a multi-step form in rails. It’s not javascript driven, so each page has its own controller action like “step1” “step2” etc. I know how to do multi-step wizards through JQuery but I don’t know how to keep rails validations per page without getting into javascript, hence this way.
Anyways, my model is a User object but I’m storing all my variables in an arbitrary Newuser variable and using the following in the view:
<% form_for :newuser, :url => { :action => "step3" } do |u| %>
In the controller, I merge the current page’s info with the overall hash using:
session[:newuser].merge!(params[:newuser])
This works great except that if the user clicks back to a previous page, the fields are no longer populated. How do I keep them populated? Do I need to change the object in the form_for to somehow refer to the session[:newuser] hash?
EDIT:
I guess I’m looking for more info on how form_for autopopulates fields within the form. If it’s not built around a model but an arbitrary hash (in this case, session[:newuser]), how do I get it to autopopulate?
What about still using a class for your population?
you could use some tableless model functions here if you wanted to include some validations.
Then in your controller steps:
your forms should continue to work.
Another option is just to set the value of the form objects directly from your session hash