How to use redirect_to to a non-Rails URL with query params?
We just had an existing use of redirect_to break due to a Rails upgrade, and it led to a question. I've been experimenting, and I don't seem to find a way to use redirect_to to send the user to a non-Rails page with query parameters appended, except by manually constructing the URL string, which seems like a shame. Previously, just a simple:
redirect_to "http://www.web.com/myurl" "parm"
was working -- it appended "parm" onto the URL, and multiple parms were handled correctly. That's no longer the case, so I was wondering if there's a new/better way to do this. The docs imply that including a Hash should work, but it doesn't:
redirect_to ("http://www.web.com/myurl", :parm => "foo")
redirect_to ("http://www.web.com/myurl", { :parm => "foo" } )
Neither one works. Manually building the URL s开发者_运维知识库tring works fine, but does anyone have an incantation that makes this work a nicer way?
Running Rails 5.0 and found this to be the simplest solution:
args = { foo: 'bar' }
redirect_to 'https://otherwebsite.com/path?' + args.to_query
The only other solution that I found on this page that worked was when specifying the host (see Topher Fangio's comment on his own post), however, then you also have to specify the port in case the original url is on a different port (which is usually the case for dev environments).
According to the documentation, any parameters that are not recognized by url_for
are passed on to the Route modules, so in theory, your code should work unless your parameter overrides one of the default ones that it looks for.
However, there is an :overwrite_params
hash that you can supposedly pass:
redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' }
Hope this helps.
精彩评论