I am working on the index page of a listing controller, which needs several sort options. Query string is needed to determine the sort option that is active for the current page. I have used a workaround for this problem by hardcoding the query string into the sort links:
=link_to "Lowest Price","/listings?sort_by=price&order=asc", :class=>"#{'active' if request.query_string =~ /sort_by=price&order=asc/ }"
But there are two problems with this. First, this is too fragile. Second, it doesn’t support a search query nor any other parameters — otherwise it breaks.
What I need is a way to change the sort options without assuming that the query string will stay intact…
Not sure if there is a best practice for doing this. I’m taking the long road and just adding helpers to parse url to hash, hash to url, and I still don’t know what to do about the active link problem. It could be a while to do all that.
Any suggestions would be appreciated.
You can do this by providing key/value pairs to any URL helper. For example: