Rick Olson’s released a Routing Navigator plugin to help understand how the Rails routing system works for your application (note: it only supports edge rails, not v1.1.2).
To test it out:
- Create a new rails application
$ rails routingtest
- Install edge rails into vendor
$ cd routingtest
$ rake rails:freeze:edge - Install the routing navigator plugin
$ script/plugin source http://svn.techno-weenie.net/projects/plugins
$ script/plugin install routing_navigator - Install the plugin’s CSS and JS file
$ rake update_routing_navigator
- Start your application
$ script/server
- Browse to
/routing_navigator
- Modify your routes, rinse and repeat
- You’ll also want to add the following to the
head
of your layout if you want to inspect routes on any of your view pages:
<%= javascript_include_tag :defaults, 'routing_navigator' %>
<%= stylesheet_link_tag 'routing_navigator' %>
For the lazy and curious: the routes generated for a base Rails application:
Route | Significant Keys | Requirements | Conditions |
---|---|---|---|
/:controller/service.wsdl/ | [:controller, :action] | {:action=>”wsdl”} | {} |
/:controller/:action/:id/ | [:controller, :action, :id] | {} | {} |
…and the routes for a simple RESTful application, written using the simply_restful plugin:
Route | Significant Keys | Requirements | Conditions |
---|---|---|---|
/:controller/service.wsdl/ | [:controller, :action] | {:action=>”wsdl”} | {} |
/people.:format/ | [:format, :action, :controller] | {:action=>”create”, :controller=>”people”} | {:method=>:post} |
/people/ | [:action, :controller] | {:action=>”create”, :controller=>”people”} | {:method=>:post} |
/people.:format/ | [:format, :action, :controller] | {:action=>”index”, :controller=>”people”} | {:method=>:get} |
/people/ | [:action, :controller] | {:action=>”index”, :controller=>”people”} | {:method=>:get} |
/people/new.:format/ | [:format, :action, :controller] | {:action=>”new”, :controller=>”people”} | {:method=>:get} |
/people/new/ | [:action, :controller] | {:action=>”new”, :controller=>”people”} | {:method=>:get} |
/people/:id/ | [:id, :action, :controller] | {:action=>”destroy”, :controller=>”people”} | {:method=>:delete} |
/people/:id/ | [:id, :action, :controller] | {:action=>”update”, :controller=>”people”} | {:method=>:put} |
/people/:id.:format;edit/ | [:id, :format, :action, :controller] | {:action=>”edit”, :controller=>”people”} | {:method=>:get} |
/people/:id;edit/ | [:id, :action, :controller] | {:action=>”edit”, :controller=>”people”} | {:method=>:get} |
/people/:id.:format/ | [:id, :format, :action, :controller] | {:action=>”show”, :controller=>”people”} | {:method=>:get} |
/people/:id/ | [:id, :action, :controller] | {:action=>”show”, :controller=>”people”} | {:method=>:get} |
/:controller/:action/:id/ | [:controller, :action, :id] | {} | {} |
Tim Lucas
View AuthorShare this article