2012-02-19 54 views
0

我通過將事件存儲在會話變量中,然後將它們傳遞到後續頁面上的KissMetrics JavaScript代碼,在我的rails應用程序上安裝KissMetrics。除了嘗試跟蹤創建的帳戶之外,此方法非常有效。看起來,當我將帳戶創建的事件存儲在我的會話變量中時,它可以正常工作,但在下一頁加載時,會話變量不見了。我把調試器放在那裏,試圖找到它被刪除的地方,但似乎什麼也沒有。 km_log_event是一種將字符串存儲在名爲km_events的會話變量中的方法。這裏是我的代碼:會話變量得到重置 - 不知道它在哪裏發生

accounts_controller /創建 - >

...  
if @account.save 
      log_event("Account", "Created", @account.name) 
      km_log_event("Account Created") 
      redirect_to(welcome_url(:subdomain => @account.subdomain)) 
      @user.activate! 
      @user.add_connection(params[:connect_to]) 
      else 
      render(:action => 'new', :layout => 'signup') 
      end 
... 

sessions_controller /歡迎 - >

def welcome 
    if current_account.new? 
     # Create the session for the owner, the account is brand new 
     current_account.user_sessions.create(current_account.owner, true) 
    elsif current_account.users.last && current_account.users.last.created_at > 1.hour.ago 
     current_account.user_sessions.create(current_account.users.last, true) 
    end 
    redirect_to embedded_invitations_path 
    end 

我只是不知道它是越來越刪除,所以我不能記錄這個事件。它似乎發生在帳戶控制器中的@ account.save之後,但在歡迎操作之前。

UPDATE:

這裏是賬戶模塊,我認爲(這不是我的代碼庫)current_account被定義。

module Accounts 
    def self.included(controller) 
     controller.helper_method :current_account 
    end 

    protected 

     def current_account 
      return @current_account if defined?(@current_account) 
      @current_account = Account.find_by_subdomain!(current_subdomain) 
     end 
end 
+0

您的瀏覽器中啓用Cookies? – bdon 2012-02-19 19:52:59

回答

0

測試這個我認爲這正在發生,你正在試圖子域之間共享會話。要做到這一點,你必須做一些配置。

請參閱Subdomain Session Not Working in Rails 2.3 and Rails 3 on Heroku with/without a Custom Domain?

+0

太棒了。我認爲這是我正在尋找的。但是,我不想將它存儲在所有子域之間(我認爲這會導致安全問題,因爲每個帳戶都有自己的子域),但是我希望允許會話在signup.website.com和任何子域之間進行。 website.com,但不在個人帳戶子域名之間。我怎樣才能做到這一點? – 2012-02-25 17:55:02

3

無效的csrf令牌將會重置會話。這可能發生嗎?

您可以輕鬆地通過從控制器以下(通常在ApplicationController中)

protect_from_forgery 
+0

我刪除了protect_from_forgery,但仍將其刪除。如果current_account.new之後,我將km_log_event放在歡迎操作中?這似乎使它的工作。但是,我仍然想知道爲什麼session var被刪除。 – 2012-02-19 20:01:10

+0

新會議如何進行?它擦除現有的? 'current_account.user_sessions.create'看起來很可疑。 – 2012-02-19 22:32:34

+1

會話var在該行代碼之前被刪除。你有沒有另外一種方法可以做到這一點? – 2012-02-23 20:35:31