Hi Folks,
I’m trying to set up a RESTful route in my rails app and have hit a
snag. My application allows various different types of querying centered
around a search phrase, and I decided it’d be nice to that in my RESTful
API by exposing resources like:
for basic information about the phrase, and then
for a specific query on that phrase (it’s popularity in this case).
Essentially I’m trying to represent the search space as a resource
space, with one resource for each possible phrase.
I set up the following in my routes.rb, and it ALMOST works:
map.resources(
:keyword_research,
:controller => ‘api/v3/keyword_research’ ,
:member => {:index => :get, :popularity => :get }
)
I can then use something like the following to generate resource URLs:
keyword_research_url( ‘some search phrase’ )
and
popularity_keyword_research_url( ‘some search phrase’ )
The only problem is when the search phrase contains a dot. That leads to
urls like:
and
which confuses the routing system to no end. This results in various
errors such as template missing, no route found, etc etc. Essentially I
think the routing system is interpretting the dotted id as specifying a
representation type, or something similar.
I thought a nice solution would be to encode the search_phrase portion
of these resource urls when I generate them, leading to urls like:
and
I’ve tested urls encoded like this and they appear to play nicely with
the routing I have, and are within the specs AFAIK. I’d be happy with
this, but the problem is that I don’t know how to generate urls like
this using the url helper methods.
Anyone have any ideas? I’d be open to either a clean way to support
un-encoded dots, or some advice on how to get ids with the dots encoded
out of the url helpers. Or some other elegant solution, of course!
Thanks,
Pete