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:

/events/1.xml

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

/events/update/1.xml

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?

thanks,

Ben

Ben,

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...

Code: http://svn.depixelate.com/applications/restful_product_tracker Blog post: http://depixelate.com/2007/1/19/restful-product-tracker

Zack Chandler wrote:

RESTful routes are making me a sad panda.

Ben,

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...

Code: http://svn.depixelate.com/applications/restful_product_tracker Blog post: http://depixelate.com/2007/1/19/restful-product-tracker

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.

b

this bash script might help: http://snippets.dzone.com/posts/show/3521 i wrote it to help me test my REST apps - might prove useful.

ed