如何使用redirect_to到带有查询参数的非Rails URL?

时间:2009-11-13 17:44:03

标签: ruby-on-rails redirect

由于Rails升级,我们刚刚使用了redirect_to break,这导致了一个问题。我一直在尝试,我似乎没有找到一种方法使用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字符串工作正常,但有没有人有咒语使这项工作更好的方式?

2 个答案:

答案 0 :(得分:3)

根据documentationurl_for无法识别的任何参数都会传递给Route模块,因此理论上,除非您的参数覆盖其中一个默认参数,否则您的代码应该可以正常工作它寻找。

但是,你可以传递一个:overwrite_params哈希:

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

希望这有帮助。

答案 1 :(得分:2)

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

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

我在此页面上找到的唯一其他解决方案是在指定主机时(请参阅Topher Fangio对自己帖子的评论),但是,您还必须指定端口以防原始URL在不同的端口上(通常是开发环境的情况)。