# RESTless over RESTful routes

**URL:** <https://www.ruby-forum.com/t/restless-over-restful-routes/85506>\
**Category:** Rails\
**Created:** [February 14, 2007, 2:49am UTC](https://www.ruby-forum.com/t/restless-over-restful-routes/85506 "2007-02-14T02:49:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![glenatron](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/94ad74/32.png) [@glenatron](https://www.ruby-forum.com/u/glenatron)\
**Post date:** [February 14, 2007, 2:49am UTC](https://www.ruby-forum.com/t/restless-over-restful-routes/85506/1 "2007-02-14T02:49:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![glenatron](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/94ad74/32.png) [@glenatron](https://www.ruby-forum.com/u/glenatron)\
**Post date:** [February 14, 2007, 3:40am UTC](https://www.ruby-forum.com/t/restless-over-restful-routes/85506/2 "2007-02-14T03:40:27Z")

</div>

On 2/13/07, Ben M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> /events/1.xml  
> map.connect ‘:controller/:action/:id.:format’
> 
> 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](http://svn.depixelate.com/applications/restful_product_tracker)  
Blog post: [http://depixelate.com/2007/1/19/restful-product-tracker](http://depixelate.com/2007/1/19/restful-product-tracker)

–  
Zack C.  
[http://depixelate.com](http://depixelate.com)

---

<div class="post-metadata">

**Author:** ![glenatron](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/94ad74/32.png) [@glenatron](https://www.ruby-forum.com/u/glenatron)\
**Post date:** [February 14, 2007, 4:09am UTC](https://www.ruby-forum.com/t/restless-over-restful-routes/85506/3 "2007-02-14T04:09:30Z")

</div>

Zack C. wrote:

> Code: [http://svn.depixelate.com/applications/restful\_product\_tracker](http://svn.depixelate.com/applications/restful_product_tracker)  
> Blog post: [http://depixelate.com/2007/1/19/restful-product-tracker](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

---

<div class="post-metadata">

**Author:** ![glenatron](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/94ad74/32.png) [@glenatron](https://www.ruby-forum.com/u/glenatron)\
**Post date:** [February 14, 2007, 4:42am UTC](https://www.ruby-forum.com/t/restless-over-restful-routes/85506/4 "2007-02-14T04:42:33Z")

</div>

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

ed
