RESTless over RESTful routes

RESTful routes are making me a sad panda.

I’m using rails 1.2.1 and have an event controller with create, update,
show, etc. I also have my resources mapped in routes.rb:

map.resources :events

I thought that the RESTful url for updating an event should be:


But I keep getting a 404 for that. On the other hand, if I post to:


it works just fine.

Note that I still have the default routes at the bottom of my routes.rb:

Install the default route as the lowest priority.

map.connect ‘:controller/:action/:id.:format’
map.connect ‘:controller/:action/:id’

But if I take that out then neither the /events/id nor the
/events/update/id versions work.

We’re not supposed to use the /controller/action type urls with REST
right? Does anyone know why map.resources isn’t working correctly or
what I can do to debug it?



On 2/13/07, Ben M. [email protected] wrote:

map.connect ‘:controller/:action/:id.:format’



The update route generated by map.resources will be events/:id (ex:
events/1) using HTTP PUT, not /events/1.xml.

I recently put together an example app to help people learn REST. You
can use it as an example if it helps…

Blog post:

Zack C.

Zack C. wrote:

Blog post:

Hey Zack, yeah it turned out that I was using the wrong curl option…
it’s -T to do a PUT… I was still using -d, which was doing a POST.
With the -T, it works like a champ… well, after I commented out the
verify method stuff that the generator put in there anyway.

I wasn’t completely lost, however… I saw that it was doing a post and
had tried to figure out how to add the _method=PUT param. Forgot to
mention that… And actually, I thought doing the .xml encouraged rails
to intervene and considered the POST a PUT. Sigh. So much to learn.

Thanks for the links… will definitely check them out.


this bash script might help:
i wrote it to help me test my REST apps - might prove useful.