Hi, I'm creating multi page form (wizard like pages) in my application using code at
http://snippets.dzone.com/posts/show/277#related problem ===> When I create a new coupon first time, it is stored in DB. After saving I try to clear out(delete old session in which coupon object is stored) session using session.delete('partial_coupon') But session is not get clear and also coupon object is not get store in DB. Please tell me what went wrong? Following is controller code----> class CouponsController < ApplicationController before_filter :get_partial_coupon_from_session, :only => [:business_coupon] after_filter :save_partial_coupon_in_session, :only => [:business_coupon] def business_coupon case request.method when :post @current_stage = params['current_stage'] if @current_stage == "stage1" @coupon.attributes = {:title => params[:coupon][:title]} if valid_for_attributes(@coupon,["title"]) @current_stage = "stage2" end elsif @current_stage == "stage2" @coupon.attributes = {:tag_line => params[:coupon][:tag_line]} if valid_for_attributes(@coupon,["tag_line"]) @current_stage = "stage3" end elsif @current_stage == "stage3" @coupon.attributes = {:price => params[:coupon][:price]} if @coupon.save ##### HERE I TRY TO CLEAR SESSION DATA session.delete('partial_coupon') flash['notice'] = "Coupon successfully created." render :action => "show", :id => @coupon else flash[:error] = "Could not save coupon #[email protected]_messages().join(', ')}" end end when :get @current_stage = "stage1" end end private def get_partial_coupon_from_session unless session['partial_coupon'].nil? @coupon = session['partial_coupon'] else @coupon = Coupon.new end end def save_partial_coupon_in_session unless @coupon.nil? session['partial_coupon'] = @coupon end end def valid_for_attributes( model, attributes ) unless model.valid? errors = model.errors our_errors = Array.new errors.each { |attr,error| if attributes.include? attr our_errors << [attr,error] end } errors.clear our_errors.each { |attr,error| errors.add(attr,error) } return false unless errors.empty? end return true end def clear_stage_errors unless session['partial_coupon'].nil? session['partial_coupon'].errors.clear end end end ############### VIEWS #############3 new.html.erb <h1>New coupon</h1> <% form_for(@coupon) do |f| %> <%= hidden_field_tag "current_stage", "#...@current_stage}"%> <%= f.error_messages %> <%= render :partial => "coupons/#...@current_stage}", :locals => {:f => f} %> <% end %> <%= link_to 'Back', coupons_path %> ----------------------------- _stage1.html.erb <p> Title<br /> <%= text_field "coupon","title" %> </p> <p> <%= submit_tag 'Next' %> </p> ------------------------ _stage2.html.erb <p> Tag line<br /> <%= text_field "coupon","tag_line" %> </p> <p> <%= submit_tag 'Next' %> </p> -------------------------------------- _stage3.html.erb <p> Price<br /> <%= text_field "coupon", "price" %> </p> <p> <%= submit_tag 'Create' %> </p> Please tell me where went wrong.? Thanks, Vikas -- Posted via http://www.ruby-forum.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 -~----------~----~----~----~------~----~------~--~---

