我正在关注Rails的this tutorial(似乎不错)。我跑完后
ruby script/generate scaffold Post
然后此链接在其中一个erb文件中起作用:
<%= link_to "My Blog", posts_path %>
为什么?我在整个应用中找到了“posts_path”,但无处可寻。另一方面,这个
<%= link_to "My Blog", home_path %>
不工作,它也是一个控制器。
posts_path
定义在哪里?
答案 0 :(得分:14)
posts_path
是您从script/generate scaffold
添加的路线免费获得的命名路线。请参阅routes.rb
您应该看到类似的内容:
map.resources :posts
免费查看API docs for information on what other named routes you get。
此外,您还可以rake routes
运行,并查看routes.rb
给您的所有内容。
如果您想要一个名为route的home_path,请在routes.rb
map.home '/home', :controller => "home", :action => "index"
答案 1 :(得分:1)
我相信“posts_path”是由Rails在运行时动态创建的。查看您的routes.rb文件 - Home可能与Posts的定义方式不同。它与您的控制器无关,它取决于路径定义。
答案 2 :(得分:1)
map.root :controller => "home"
是编写主目录路径的较短方式。这将使用/有家,而不是/ home。如果您仍想使用/ home(和home_path),map.home 'home', :controller => "home"
将执行相同的操作。
关于路由的所有内容都有great guide written by Mike Gunderloy。