title: Rails session prevent navigation
body: <p>In my controller I save the form data into session when user post the request to create new Invoice. But once in invoice page, I cant navigate away to another page because the session still not cleared. Following were my code.</p>
  
  <pre><code>def new
  
          @invoice = Invoice.new
  
          #post request from detail page to invoice along with variable from form
          if request.post?     
  
              @invoice.booking_date = params[:datepicker]
              @invoice.product_id = params["product-id"]
              @invoice.variants = params[:variant]
  
              #if user not signed in, user redirected to sign in page before    
              #continue to post invoice page with form data saved in session
              if !user_signed_in?
                  session[:pending_invoice] = @invoice
                  return redirect_to new_user_session_path
  
              end
  
              #following for case where user already signed in before directed to 
              #invoice page
              set_extra_params_for_new
              @invoice_params = {}
              @contact_detail_params = {}
  
          else
  
              #this is when user are from sign in page with session present. This is 
              #the code that make the issues where I cant navigate away to other 
              #pages until I cleared the session with session[:pending_invoice] = 
              #nil.
              if (session[:pending_invoice].present?) &amp;&amp; (session[:pending_invoice].instance_of? Invoice)
  
                  @invoice = session[:pending_invoice]
                  set_extra_params_for_new
  
                  @invoice_params = {}
  
                  @contact_detail_params = {}
  
              else
                  #this code for params post request that comes from payment gateway. So  
                  #all the data in invoice page is intact
                  @invoice.booking_date = params[:invoice][:booking_date]
                  @invoice.product_id = params[:invoice][:product_id]
                  @invoice.coupon_id = params[:invoice][:coupon_id]
                  @invoice.coupon_amounts = params[:invoice][:coupon_amounts]
                  @coupon_amounts_with_user_currency = params[:invoice][:coupon_amounts_with_user_currency]
                  @invoice.variants = params[:variant]
                  set_extra_params_for_new
  
                  @invoice_params = params[:invoice]
  
                  #session[:pending_invoice] = nil
  
              end
          end
  
          set_invoice_currency_attributes(@invoice)
  
          gon.invoice = @invoice
          gon.real_total_with_currency = @invoice.real_total_with_currency
          gon.real_total = @invoice.real_total
  
  
      end
  </code></pre>
  
  <p>Now the issues, if i cleared the <code>session</code> with <code>#session[:pending_invoice] = nil</code>, user wont be able to refresh the page. It will cause an error. How can I resolve this kind of issue? Thanks!!</p>