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

Mas*_*ise 14 redirect ruby-on-rails

由于Rails升级,我们刚刚使用了redirect_to break,这导致了一个问题.我一直在尝试,我似乎还没有找到一种方法,使用redirect_to的用户发送到与查询参数的非Rails的页面追加,除了通过手动构造URL字符串,这似乎是一个耻辱.以前,只是一个简单的:

redirect_to "http://www.web.com/myurl" "parm"
Run Code Online (Sandbox Code Playgroud)

工作 - 它将"parm"附加到URL,并正确处理多个parms.情况已经不再如此,所以我想知道是否有新的/更好的方法来做到这一点.文档暗示包含哈希应该有效,但它不会:

redirect_to ("http://www.web.com/myurl", :parm => "foo")
redirect_to ("http://www.web.com/myurl", { :parm => "foo" } )
Run Code Online (Sandbox Code Playgroud)

两者都不起作用.手动构建URL字符串工作正常,但有没有人有一个咒语,使这项工作更好的方式?

Top*_*gio 5

根据文档,任何无法识别的参数都会url_for传递给 Route 模块,因此理论上,除非您的参数覆盖了它查找的默认参数之一,否则您的代码应该可以工作。

但是,:overwrite_params您应该可以传递一个散列:

redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


fgb*_*ist 5

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

args = { foo: 'bar' }
redirect_to 'https://otherwebsite.com/path?' + args.to_query
Run Code Online (Sandbox Code Playgroud)

我在此页面上找到的唯一可行的其他解决方案是在指定主机时(请参阅Topher Fangio在他自己的文章中的评论),但是,如果原始URL位于其他端口上,则还必须指定端口(开发环境通常是这种情况)。

  • 感谢您提供大量文档和帮助您的时间。我讨厌RoR。 (2认同)