簡體   English   中英

redirect_to之后丟失會話

[英]lost session after redirect_to

新增說明:(很抱歉沒有提及)

ApplicationController.current_account定義為:

class ApplicationController < ActionController::Base
  class << self
    def current_account
      @current_account
    end
    def current_account=(value)
      @current_account = value
    end
  end

=========

我在當前項目(即會話)中遇到了奇怪的表現。 奇怪的是,它在Safari中是正常的,但在其他瀏覽器(包括chrome,firefox和Opera)中卻失敗了。

有一個用於輸入部分密鑰信息(電子郵件,密碼等)的注冊表,並提交給名為“創建”的操作

這是創建動作的基本代碼:

@account = Account.new(params[:account])
if @account.save
  ApplicationController.current_account = @account
  session[:current_account] = ApplicationController.current_account
  session[:account] = ApplicationController.current_account.id

  email = @account.email
  Mailer.deliver_account_confirmation(email)

  flash[:type] = "success"
  flash[:notice] = "Successfully Created Account"

  redirect_to :controller => "accounts", :action => "create_step_2"
else
  flash[:type] = "error"
  flash[:title] = "Oops, something wasn't right."
  flash[:notice] = "Mistakes are marked below in red. Please fix them and resubmit the form. Thanks."
  render :action => "new"
end

我還在應用程序控制器中創建了一個before_filter,它具有以下代碼:

ApplicationController.current_account = Account.find_by_id(session[:current_account].id) unless session[:current_account].blank?

對於Safari,沒有任何問題。 但是對於其他瀏覽器,session [:current_account]不存在,因此產生了以下錯誤消息:

RuntimeError in AccountsController#create_step_2

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

有人可以幫我嗎?

1]不要寫

ApplicationController.current_account

只是

current_account

2]在您的application_controller中

   def current_account
     session[:current_account]
   end

3]

  ApplicationController.current_account = @account
  session[:current_account] = ApplicationController.current_account
  session[:account] = ApplicationController.current_account.id

應該

  session[:current_account] = @account
  session[:account] = @account.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM