On Mon, Feb 21, 2011 at 4:34 PM, Colin Law <[email protected]> wrote:
> On 21 February 2011 07:56, Jim Ruther Nill <[email protected]> wrote: > > > > > > On Mon, Feb 21, 2011 at 3:38 PM, Colin Law <[email protected]> > wrote: > >> > >> On 21 February 2011 03:34, James allan To <[email protected]> wrote: > >> > Hi I would just like to ask if someone can point me to the right > >> > direction. I have an order page which will need to be split into 3 > views > >> > before saving say in controller: > >> > > >> > def new > >> > @order = Order.new > >> > end > >> > > >> > def process_new > >> > @order = Order.new(params[:order]) > >> > #do validation for new > >> > # redirect to no_of_attendees > >> > end > >> > > >> > def no_of_attendees > >> > @order = Order.new(params[:order]) > >> > end > >> > > >> > def process_no_of_attendees > >> > @order = Order.new(params[:order]) > >> > #do validation > >> > #redirect to save page > >> > end > >> > > >> > Question: Is there aright way of doing this (carry params values > between > >> > views) or should I just place the data from new in session as we move > to > >> > forward to the third page create a hash from session and save in > model? > >> > >> If all you are passing back each time is the latest data for the > >> order, so you can do Order.new(params[:order]) as you have shown, then > >> there is no reason to complicate things by using the session. > >> > > > > this is fine as long as you place the attributes in the previous step in > a > > hidden field so it will not be lost > > when you submit the form. > > It appears from the OP that even this is not necessary, as all the > required data is in params[:order]. > > even if all the required data is in params[:order], he still needs to set the attributes filled up in the last step as hidden fields. for example (let's use the OP's actions) STEP1. #new action this step asks for order's name, so we'd have params[:order] = {:name => name} available for next step. STEP2 #process_new action this step asks for order's no_of_attendees. so we'd have params[:order] = {:no_of_attendees => no_of_attendees} available for next step. STEP3 #process_no_of_attendees in this action, we already lost the name attribute for order since we didn't add a hidden field for this attribute. so eventhough we use params[:order] in all the actions, it's still needed to add hidden_field tags for attributes filled up in the previous actions. > > > >> > >> You might like to consider whether the controller (and maybe the view) > >> would be simplified by combining the actions (and maybe views) and > >> passing up and back a phase value to indicate which phase of the > >> operation is current. > > To do this would require a hidden field as you have pointed out. > > Colin > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- ------------------------------------------------------------- visit my blog at http://jimlabs.heroku.com -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

