Routes ordering

In the "Head First Rails" book, it mentions this ordering in routes.rb:

ActionController: : Routing: : Routes. draw do | map|    map. connect ' /ads/new' , : controller=>' ads' , : action=>' new'    map. connect ' /ads/create' , : controller=>' ads' , : action=>' create'    map. connect ' /ads/' , : controller=>' ads' , : action=>' index'    map. connect ' /ads/: id' , : controller=>' ads' , : action=>' show'

If we enter:

   map. connect ' /ads/: id' , : controller=>' ads' , : action=>' show'

At the top of the ordering, how will that affect our routing.

Can you just describe how to order routes in routes.rb? I mean, what is the rule to follow when ordering routes?

Thanks.

The first entry in the file that matches is used, later ones are disregarded, so if you put the /ads/:id one at the start (note there is no space after the colon), then if a url matches that route then later ones will not be tested. You can always try it and see for yourself what happens. Have a look at the Rails Guide on routing for more information.

Colin

Abder-Rahman Ali wrote:

In the "Head First Rails" book, it mentions this ordering in routes.rb:

ActionController: : Routing: : Routes. draw do | map|    map. connect ' /ads/new' , : controller=>' ads' , : action=>' new'    map. connect ' /ads/create' , : controller=>' ads' , : action=>' create'    map. connect ' /ads/' , : controller=>' ads' , : action=>' index'    map. connect ' /ads/: id' , : controller=>' ads' , : action=>' show'

If we enter:

   map. connect ' /ads/: id' , : controller=>' ads' , : action=>' show'

At the top of the ordering, how will that affect our routing.

Can you just describe how to order routes in routes.rb? I mean, what is the rule to follow when ordering routes?

Thanks.

I'm not sure how old "Head First Rails" is, though I'm thinking 2008. If you're getting started take a look at Ruby on Rails Guides (as Colin mentioned), which has an excellent page for this topic:

Using RESTful routes simplifies that that example is trying to achieve by a lot, and using them I rarely run into the precedence issue:

map.resources :ads, :only => [:index, :new, :create, :show]

Abder-Rahman Ali wrote:

In the "Head First Rails" book, it mentions this ordering in routes.rb:

ActionController: : Routing: : Routes. draw do | map|    map. connect ' /ads/new' , : controller=>' ads' , : action=>' new'    map. connect ' /ads/create' , : controller=>' ads' , : action=>' create'    map. connect ' /ads/' , : controller=>' ads' , : action=>' index'    map. connect ' /ads/: id' , : controller=>' ads' , : action=>' show'

If we enter:

   map. connect ' /ads/: id' , : controller=>' ads' , : action=>' show'

At the top of the ordering, how will that affect our routing.

Can you just describe how to order routes in routes.rb? I mean, what is the rule to follow when ordering routes?

The first matched route rules. If you read any Rails routing reference, you'll find that is says just this.

Once again, the bigger answer: spend less time posting and more time reading. Virtually every question you've asked on this list could have been answered by 30 seconds with Google and/or 5 minutes with documentation.

Thanks.

Best,

Thanks everyone. Yes, Parker, the "Head First Rails" is 2008.