# Help with RESTful routes

**URL:** <https://www.ruby-forum.com/t/help-with-restful-routes/92566>\
**Category:** Rails\
**Created:** [April 20, 2007, 8:13pm UTC](https://www.ruby-forum.com/t/help-with-restful-routes/92566 "2007-04-20T20:13:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/3bc359/32.png) [@jon](https://www.ruby-forum.com/u/jon)\
**Post date:** [April 20, 2007, 8:13pm UTC](https://www.ruby-forum.com/t/help-with-restful-routes/92566/1 "2007-04-20T20:13:38Z")

</div>

Hi,

I have just added a new functions to my RESTful user model  
forgot\_password that I believe I should now be accessing in the  
following url [http://localhost:3000/users;forgot\_password](http://localhost:3000/users;forgot_password) instead of  
/users/forgot\_password is this correct?

Secondly reading the agile rails book it is telling me I need to add  
somthing to my routes to define this, such as  
map.resources :users, :collection =\> {:forgot\_password =\> :get}  
what is the difference between :collection and :member and which one  
should I use?

Thanks,  
Jon

---

<div class="post-metadata">

**Author:** ![jon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/3bc359/32.png) [@jon](https://www.ruby-forum.com/u/jon)\
**Post date:** [April 20, 2007, 8:55pm UTC](https://www.ruby-forum.com/t/help-with-restful-routes/92566/2 "2007-04-20T20:55:48Z")

</div>

John,

:collection applies to collections of your resource. See the standard  
index action:

/users

:member applies to one instance of your resource. See the standard  
show action:

/users/1

If your custom action will return an array of your resource  
use :collection if it return one instance of your resource  
use :member.

Also in case your action creates a new instance of your resource  
use :new

Also make sure you use the correct method in your custom actions.  
Keep REST verbs in mind and use the proper one for the task.

Example:

map.resources :users :member =\> { :disable =\> :put }

creates:

/users/:id;disable

Here we create routes for disabling a member (instance) of User and  
are updating it’s state to be disabled. You may want to do something  
like this in case other related actions should be taken when a user  
gets disabled. If only the user resource’s state changes you can use  
the standard routing to update (PUT) it’s new values.

---

<div class="post-metadata">

**Author:** ![jon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/3bc359/32.png) [@jon](https://www.ruby-forum.com/u/jon)\
**Post date:** [April 20, 2007, 9:33pm UTC](https://www.ruby-forum.com/t/help-with-restful-routes/92566/3 "2007-04-20T21:33:54Z")

</div>

@Robert:

Thanks for taking the time to answer that. That helped me out quite a  
bit.

---

<div class="post-metadata">

**Author:** ![jon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/3bc359/32.png) [@jon](https://www.ruby-forum.com/u/jon)\
**Post date:** [April 21, 2007, 11:39am UTC](https://www.ruby-forum.com/t/help-with-restful-routes/92566/4 "2007-04-21T11:39:16Z")

</div>

cheers, thats explained it pretty well
