2011-05-10 44 views
2

我有一個名爲重定向回或默認的應用程序控制器方法,用來將用戶重定向到網頁,他們登錄後請求導軌 - 追加查詢參數對現有的URL

def redirect_back_or_default(default) 
    redirect_to(session[:return_to] || default)  
    session[:return_to] = nil 
end 

我想能夠可選地爲URL添加URL參數(用於某些分析跟蹤),但我不確定最佳方式。我想方法簽名更改爲這個

def redirect_back_or_default(default, params=nil) 
    redirect_to(session[:return_to] || default)  
    session[:return_to] = nil 
end 

並以某種方式附着在PARAMS現有的URL。有沒有標準的紅寶石或ROR方式來做到這一點?我顯然可以通過強制檢查來查看是否有一個查詢字符串作爲URL的一部分,並使用正則表達式手動構建查詢字符串,但我希望有一個更簡單的標準方法來執行此操作。

回答

0

here

要傳遞與redirect_to的參數 只需添加他們。像...

redirect_to :controller => 'another', :action => 'def', :param1 => 'some', :param2 => 'thing', :param => 'else' 
+0

這並不工作,因爲URL是在這一點上 – John 2011-05-10 13:40:40

+0

已建成我想'redirect_to的((會話[:的return_to] ||默認),:test_param => 1)' – John 2011-05-10 13:41:39

+0

好吧,session [:return_to]'和'default'包含完整的URL? – 2011-05-10 13:43:12

0

非標準方法

def redirect_to_back_or_default(default = "/") 
    back = case request.env["HTTP_REFERER"] 
    when request.fullpath 
    default 
    when nil 
    default 
    else 
    :back 
    end 
    redirect_to back 
end 
+0

這仍然不能幫助我添加額外的參數「回」 – John 2011-05-10 14:11:07