2016-03-08 62 views
1

我試圖使用覆蓋設計的#after_sign_in_path_for以重定向到任何用戶的最後URL頁面或根路徑:地帶參數會話[:previous_url]在Rails的

# Redirects on successful sign in 
    def after_sign_in_path_for(resource) 
    puts session[:previous_url] 
    if session[:previous_url] != email_confirmation_url 
     session[:previous_url] || root_path 
    else 
     root_path 
    end 
    end 

我不如果previous_url與email_confirmation_url相同,則希望它重定向到上一頁。但是,我的問題是,即使有參數添加到會話結尾[:previous_url],我也希望該規則保持不變。我遇到的問題是,

email_confirmation_url == /users/confirmation 
session[:previous_url] == /users/confirmation?confirmation_token=HGESMzRz2sz1UbsvudSS 

或其他一些令牌值。我想從URL中除去確認標記或任何其他參數,然後進行比較。我怎樣才能做到這一點?如果使用start_with?session[:previous_url]開始與email_confirmation_url

if session[:previous_url].split('?').first != email_confirmation_url 
    session[:previous_url] || root_path 
else 
    root_path 
end 

您也可以檢查:

回答

3

假設所有的URL參數是?後的網址,你可以做到這一點

if !session[:previous_url].start_with? email_confirmation_url 
    session[:previous_url] || root_path 
else 
    root_path 
end 
-1

嘗試使用

request.path 

request.base_url + request.path 
+1

這不會提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/評論/低質量帖/ 11544323) – Nabin

+0

老兄你讀的問題,他只問如何不包括在網址 – Lymuel

+0

@SpiderMan參數,爲什麼你不只是發佈你的意見或評論而不是批評別人的答案? – Lymuel