route conflict - help resolving

These are the routes I would like:   map.forums_new_topic 'forums/:forum_id/:subsection_id/topics/ new', :controller => "topics", :action => "new"   map.forums_show_topic 'forums/:forum_id/:subsection_id/:topic_id', :controller => "topics", :action => "show"

however no matter which order they're in it seems like it always tries to use the "show" route and it crashes because "topics" isn't a id.

Suggestions? Am I doing this the right way?

Thanks! :slight_smile:

Maybe if you restricted the format of the topic_id

map.forums_show_topic 'forums/:forum_id/:subsection_id/:topic_id', :topic_id => /\d+/, :controller => 'topics', :action => 'show'

Shallow routing was added to Rails 2.2, and encourage you to check it out. I never use deeply nested routes myself, because I don't see the point in adding information, that you already have, to the URL.

By setting :shallow => true on the resource mappings, this: GET forums/:forum_id/subsection/:subsection_id/topics/topic_id will turn into this: GET topics/topic_id

Ryan Bates has an episode on this if you're interested:

Yes, but I took the OP at his word that he wanted particular routes/urls.

He wasn't using RESTful routing, something which I noticed but decided not to mention in trying to attack his question directly.

You may be right. I thought he was using RESTful routing, but had syntax errors in the manual mappings.