#34
May 21, 2007

Named Routes

When you add a custom route, make it a named route so you have url helper methods to easily link to that new route. See episode for details.
Download (30.9 MB, 6:39)
alternative download for iPod & Apple TV (9.8 MB, 6:39)
# routes.rb
map.resources :projects
map.task_archive 'tasks/:year/:month', :controller => 'tasks', :action => 'archive'
map.home '', :controller => 'projects', :action => 'index'
<!-- projects/index.rhtml -->
<ul>
<% for project in @projects %>
  <li>
    <%= link_to project.name, project_path(project) %>
    | <%= link_to "Edit", edit_project_path(project) %>
    | <%= link_to "Destroy", project_path(project), :method => :delete %>
  </li>
<% end %>
</ul>

<p><%= link_to "New Project", new_project_path %></p>

RSS Feed for Episode Comments 14 comments

1. Jermaine May 21, 2007 at 00:40

Great episode as always!

If I'm not mistaken, you've used this kind of a named route ('resources') behind the scenes in episode 21 as well....(REST).

Gr,

- J.


2. Vladislav May 21, 2007 at 01:17

Cool!


3. Vigosan May 21, 2007 at 02:28

Congratulations,
this screencast is fabulous.


4. Ryan Bates May 21, 2007 at 07:24

@Jermaine, yep, I've been using this technique all over the place in previous episodes. Thought it was about time I explained it. :)


5. Gary May 21, 2007 at 08:26

For some reason I get a NameError whenever I try to use path but url works great. Is there any reason to believe that path is deprecated or replaced with something else? Or is there something else we need to set somewhere for this to work right?


6. Ryan Bates May 21, 2007 at 09:03

@Gary, what version of Rails are you using? It may require 1.2 but I"m not sure.


7. Geoff Buesing May 21, 2007 at 09:39

Great stuff!

Btw, Errtheblog.com has a helpful rake task to print out all of your named routes, here:

http://require.errtheblog.com/projects/browser/dugg/lib/tasks/err.rake?format=raw

So whenever I need to know what named routes are available for a resource, I just do:

rake routes | grep post


8. Ryan Bates May 21, 2007 at 11:40

That's extremely useful, thanks Geoff!

For those not sure how to install it, add the .rake file to your lib/tasks directory.


9. weskycn May 21, 2007 at 18:52

REST,yes,it's good for me .
thanks.
你们这样的同志是值得尊敬的!


10. Gary May 22, 2007 at 08:36

I finally understood what was the problem with path not working. I had updated the gems but hadn't updated the version number in environment.rb.

Once I updated it everything worked fine.


11. Gabriel Mansour Sep 10, 2007 at 10:34

Hi Ryan,

One thing I noticed was that when

/page/1;edit
/page/edit/1


12. Mo Rashed Oct 27, 2007 at 09:36

Sup Ryan,

When you did:

map.task_archive 'tasks/:year/:month', :controller => 'tasks', :action => 'archive'

Doesnt this conflict with the standard routing:

tasks/show/2

thnxs


13. kino May 23, 2008 at 01:54

Is it the case that human reason excludes the possibility of the phenomena, or is the real question whether the phenomena can be treated like the Categories?


14. luk Jul 24, 2008 at 04:45

muzu to tady jenom zkusit at vim jak to vypada

Add your comment:

(SKIP THIS ONE)

(required)

(not shown)


(use pastie or gist for code)

sponsored by:
if you want to help:
required:
Get Quicktime Player