Reputation: 69757
I'm following this tutorial (seems good) for Rails. After I run
ruby script/generate scaffold Post
then this link works in one of the erb files:
<%= link_to "My Blog", posts_path %>
WHY? I've looked for "posts_path" in the whole app and it's nowhere to be found. On the other hand, this
<%= link_to "My Blog", home_path %>
does not work, and it's also a Controller.
Where is the posts_path
defined?
Upvotes: 4
Views: 4104
Reputation: 19331
posts_path
is a named route you get for free from the route that was added by script/generate scaffold
. See routes.rb
you should see something like this:
map.resources :posts
See the API docs for information on what other named routes you get for free.
Also you can run rake routes
and see what all your routes.rb
is giving you.
If you want a home_path named route add a line like this to your routes.rb
:
map.home '/home', :controller => "home", :action => "index"
Upvotes: 14
Reputation: 107728
map.root :controller => "home"
would be a shorter way of writing the path to your home directory. This will use / has the home, and not /home. If you still want to use /home (and home_path), map.home 'home', :controller => "home"
will do the same thing.
There's a great guide written by Mike Gunderloy about everything there is to know about routing.
Upvotes: 1
Reputation: 89102
I believe that "posts_path" is created dynamically by Rails at runtime. Look at your routes.rb file - Home is probably not defined the same way as Posts. It has nothing to do with you controllers, it's dependent on the route definition.
Upvotes: 1