2011-08-28 18 views
1

(1)「主持人」與網站上的「廣告系列」共享一個鏈接,例如: /活動/ 17如何存儲哪些頁面未登錄的用戶從rails中抵達

(2)/運動/供簽署的訪客的東西有17次點擊,這只是在/簽約用戶,並帶到登錄/註冊頁面

我想(例如17)存儲在新用戶的參數(我正在考慮使用隱藏字段)中,但不知道如何保存該ID。我曾考慮過request.path,但不知道如何將其傳遞到下一頁。

回答

1

這是我如何解決這個問題。我假設你的應用程序控制器內部有一些類型的身份驗證方法。

內,您的應用程序控制器,具有類似如下:

def authenticate 
    unless current_user 
    session[:protected_destination] = request.fullpath 
    flash[:notice] = "You're not logged in." 
    redirect_to login_path 
    return false 
    end 
end 

然後,在你登錄邏輯,你必須有一個像下面的一些代碼。對我而言,因爲我使用Authlogic,登錄發生在UserSession控制器中。

def new 
    session[:protected_destination] ||= request.referrer || root_path 

    if current_user 
    redirect_to session[:protected_destination] 
    session[:protected_destination] = nil 
    else 
    @user_session = UserSession.new 
    end 
end 

def create 
    @user_session = UserSession.new(params[:user_session]) 

    if @user_session.save 
    protected_destination = session[:protected_destination] || root_path 
    session[:protected_destination] = nil 
    redirect_to protected_destination 
    else 
    render :action => :new 
    end 
end 

正如你所看到的,你想要去的目的地存儲在會話中。當你登錄時,它會檢查你是否要去某個地方,然後在那裏重定向你。如果沒有,它只會帶你到根網址。

希望有所幫助。

+0

感謝您的貢獻。我現在有這樣的設置,這非常棒。我希望添加的是,當用戶註冊時,可以將'campaign_id'存儲在'users'表中 - campaign_id由用戶到達的活動頁面給出 – WillLA

+0

您是否嘗試過使用某種連接表?我個人贊成有:,通過關係。你可以做的是創建一個名爲CampaignRelation的新模型,它屬於活動並屬於用戶。然後,在您的身份驗證方法中,如果用戶未登錄,則可以將該活動ID存儲在會話中。登錄時,如果會話中有活動ID,則創建屬於目標Campaign和新登錄用戶的新CampaignRelation。那有意義嗎? – Max

+0

這非常有趣 - 但是,這些訪問者還沒有註冊,我有興趣提供正確的活動ID作爲其用戶帳戶的屬性,一旦他們註冊(即他們遵循的活動是由他們在成爲會員之前首次訪問的活動頁面)。不知道你的解決方案如何在這種情況下工作。謝謝! – WillLA

相關問題