Forum: Ruby on Rails Canonical Way/Method to Add/Merge Query Parameters onto URL

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Kendall (Guest)
on 2009-05-14 00:12
(Received via mailing list)
Hi, I've done some searching but haven't yet found if there is a
"correct" way to do this.

I have an existing URL (generated, for example, by a call to one of my
named-route's helpers: login_url). I may (or may not) have, as part of
this URL, a query string fragment ("?test=true" for example) as part
of the URL. I also have 1 (or more) name/value pairs I'd like to add,
as query parameters, to this URL, overwriting existing values if there
is a name collision.

I could write up a method to do this pretty easily. If, however, there
is already rails code and/or a "recommended," "official," or
"canonical" way to do this, I'd like to know.
Philip H. (Guest)
on 2009-05-14 00:24
(Received via mailing list)
Let's say that your controller gets run with params[:test] => 'true'...

Then in your controller or view you can do:

login_url(params.merge(:test => false, :foo => 'bar'))

and will end up with

..../login?test=false&foo=bar

Look at the merge and reverse_merge methods for more.

-philip
Kendall (Guest)
on 2009-05-14 00:59
(Received via mailing list)
Thanks. Very helpful!
This topic is locked and can not be replied to.