2009-11-13 26 views
10

由于Rails升级,我们只是使用了redirect_to中断,并且导致了一个问题。我一直在尝试,我似乎没有找到一种方法来使用redirect_to将用户发送到带有查询参数的非Rails页面,除非手动构建URL字符串,这似乎是一种耻辱。此前,只是简单:如何将redirect_to用于带查询参数的非Rails URL?

redirect_to "http://www.web.com/myurl" "parm" 

是工作 - 它附加“PARM”到URL,并多次被PARMS正确处理。这不再是这种情况,所以我想知道是否有新的/更好的方法来做到这一点。该文档暗示,包括一个哈希应该工作,但它并不:

redirect_to ("http://www.web.com/myurl", :parm => "foo") 
redirect_to ("http://www.web.com/myurl", { :parm => "foo" }) 

无论是一期工程。手动构建URL字符串可以正常工作,但是有没有人有一个咒语让这个工作更好?

回答

3

根据documentationurl_for未识别的任何参数都被传递给Route模块,因此从理论上说,除非您的参数覆盖了它所寻找的默认参数之一,否则您的代码应该可以工作。

然而,有一个:overwrite_params哈希,你可以推测传递:

redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' } 

希望这有助于。

+0

这不起作用。该字符串是直接使用的。 – deepak 2012-08-30 11:23:20

+0

@deepak您使用的是哪个版本的Rails?事情自2009年以来可能发生了很大的变化:-) – 2012-09-04 15:50:53

+1

在rails 3.2.8上试过,我认为最新的稳定 – deepak 2012-09-05 16:56:34

0

运行Rails的5.0,发现这是最简单的解决方案:

args = { foo: 'bar' } 
redirect_to 'https://otherwebsite.com/path?' + args.to_query 

,我这个页面,工作指定主机时,被上发现的唯一的其他解决方案(见自己的岗位托弗方吉奥的评论)但是,如果原始网址位于不同的端口上(通常是开发环境的情况),您还必须指定端口。