Be careful with params.merge()
I've seen a lot of people doing it and I used to do it too, use params.merge(…)
in link_to or redirect_to calls. You do this because you want to change one ore more parameters (like the locale, current page or search query) but leave the rest as it is.
But heads up! There is an issue with this solution:
link_to("Page 2", params.merge(page: 2)) # /users?page=2
link_to("parlez vous français?", params.merge(locale: "fr")) # /fr/about
What do you think would this request url do to the second link? Hint: You won't get a french customer anymore :)
http://localhost:3000/en/about?%68%6f%73%74=%77%77%77%2e%35%30%72%65%61%73%6f%6e%73%74%6f%68%61%74%65%74%68%65%66%72%65%6e%63%68%2e%63%6f%6d%2f%23&%70%6f%72%74=%38%30
equals
http://localhost:3000/en/about?host=www.50reasonstohatethefrench.com/%23&port=80
which results in you link target being
http://www.50reasonstohatethefrench.com/#/fr/about
There is also protocol
you could tamper with. So if you have french customers you might want to know how to get out of this misery.
Written by Sven Pachnit
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#