# Help understanding routes

**URL:** <https://www.ruby-forum.com/t/help-understanding-routes/85137>\
**Category:** Rails\
**Created:** [February 10, 2007, 12:32pm UTC](https://www.ruby-forum.com/t/help-understanding-routes/85137 "2007-02-10T12:32:00Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![glenn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4bbf92/32.png) [@glenn](https://www.ruby-forum.com/u/glenn)\
**Post date:** [February 10, 2007, 12:32pm UTC](https://www.ruby-forum.com/t/help-understanding-routes/85137/1 "2007-02-10T12:32:00Z")

</div>

Hi

Trying to get my head around routes, particularly RESTful routes, and  
mapping to controllers, and the magic urls that go with them.

I have a model called course\_materials which acts\_as\_tree which also  
belongs\_to a model called course.

I have this in routes.rb

map.resources :courses do |course|  
course.resources :course\_materials do |course\_material|  
course\_materials.resources :course\_materials  
end  
end

in views/course\_materials/new.rhtml I have a form with:  
url =\> course\_material\_path

This generates the html I would imagine it should. e.g.

action="./courses/10/course\_materials/67/course\_materials"

However, when the form is submitted, instead of the controller maping  
this to ‘create’ it maps it to ‘update’.

Could someone help me grasp why this isnt mapping to create, and what  
I might need to do so? is what Im trying to do even possible with  
restful routes?

thanks

Glenn

---

<div class="post-metadata">

**Author:** ![glenn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4bbf92/32.png) [@glenn](https://www.ruby-forum.com/u/glenn)\
**Post date:** [February 10, 2007, 3:37pm UTC](https://www.ruby-forum.com/t/help-understanding-routes/85137/2 "2007-02-10T15:37:18Z")

</div>

Are you _really_ trying to nest a resource [:course\_materials] within  
itself?? I think [and I’m just guessing here] the confusion is arising  
from  
just that. When you’ve got an id with that first :course\_materials,  
Rails is  
going to send that as an update [since it has an id and therefore a  
record  
already]. I dunno if it’s possible or not to use acts\_as\_tree with  
RESTful  
routes but it seems like the problem lies in it.

RSL

---

<div class="post-metadata">

**Author:** ![glenn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4bbf92/32.png) [@glenn](https://www.ruby-forum.com/u/glenn)\
**Post date:** [February 10, 2007, 4:08pm UTC](https://www.ruby-forum.com/t/help-understanding-routes/85137/3 "2007-02-10T16:08:26Z")

</div>

On Feb 11, 1:36 am, “Russell N.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Are you _really_ trying to nest a resource [:course\_materials] within  
> itself?? I think [and I’m just guessing here] the confusion is arising from  
> just that. When you’ve got an id with that first :course\_materials, Rails is  
> going to send that as an update [since it has an id and therefore a record  
> already]. I dunno if it’s possible or not to use acts\_as\_tree with RESTful  
> routes but it seems like the problem lies in it.

hmm… yep - i am trying that - only because it _should_ be possible.  
and it kinda works - more than i dared hope…  
it seems that with say:

/course/5/course\_material/1/course\_material/2

1 gets assigned to :course\_material\_id (which I can use for the  
parent)  
and 2 gets assigned to the id.

the first problem lies matching to correct action - it seems that  
sometimes the left hand end gets used to match, and sometimes the  
right

the second problem lies in being able to predict control what url  
helpers will do and are available

the 3rd problem exists in that - you cant recurse - afaict - the  
extent to which you’re prepared to nest, is the extent to which you  
can get some results

i’ve got around it by doing map.control for somethings and letting  
rest works where it seems to - its a bit flakey possibly, but works to  
a point - but inspite of getting around it - id still like to  
understand either how to make it work or why it doesnt

thanks russell  
glenn

---

<div class="post-metadata">

**Author:** ![glenn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/4bbf92/32.png) [@glenn](https://www.ruby-forum.com/u/glenn)\
**Post date:** [September 25, 2007, 11:10pm UTC](https://www.ruby-forum.com/t/help-understanding-routes/85137/4 "2007-09-25T23:10:16Z")

</div>

If it works… Work it!

RSL
