2011-05-10 45 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