2011-08-28 139 views
0

當用戶通過點擊任何特定頁面來註冊時,我試圖通過保存引用者來註冊後重定向用戶。但它沒有正常工作。註冊後重定向

在我的應用程序控制器

def save_referer 
    unless user_signed_in? 
    unless session['referer'] 
     session['referer'] = request.referer || 'none' 
    end 
    end 
end 

在用戶模型

def save_with(referer) 
    referer = referer unless referer == "null" 
    self.save 
end 

這裏即時通訊將其保存

if current_user.sign_in_count <= 1 
    if current_user.save_with(session[:referer]) 
    redirect_to session[:referer] 
    else 
    redirect_to any_other 
    end 

回答

0

在用戶模式,我想你沒有明確正確的指屬性。

def save_with(referer) 
    self.referer = referer unless referer == "null" 
    self.save 
end 
+0

最初我做到了這一點,但後來我得到了未定義的方法'referer ='爲#<用戶:0xc4a8bf0> –

+0

註冊後,我有用戶配置文件完成步驟,並在配置文件完成後重定向到引用程序,它是強制性的。有時它重定向到默認主機頁面,有時甚至沒有重定向。它應該重定向到引用頁面。 –

0

一般來說,我採取這種策略:

任何地方我有一個註冊按鈕,我聯繫上申請,像這樣:

<a href="/signup?signup_refer=/current_path">Signup!</a> 

然後在我註冊的動作我這樣做:

def signup 
    session[:signup_refer] = params[:signup_refer] if params[:signup_refer] # put the refer in a session 
    redirect_to(signup_path) if session[:signup_refer] && params[:signup_refer] # this clears params if you want to keep your url nice an clean for the user 
    # do signup stuffs 
    signup_refer = session[:signup_refer] # get the refer info in a variable 
    session[:signup_refer] = nil # clear the session before redirecting 
    redirect_to(signup_refer ? signup_refer : "/default_post_signup") 
end 

我知道它可能是凌亂的,但它完全適用於我(在Merb中工作良好,它在「redirect()不是redirect_to()),但你明白了。

+0

它看起來很混亂,我使用Devise註冊。正如我告訴我有2步註冊,註冊後我重定向用戶填寫配置文件,這是強制性的,我保存配置文件後重定向到引用頁面。我上面的代碼很好,但它通常會重定向到默認主頁。我不知道爲什麼? –