这个“posts_path”变量在哪里定义?

时间:2009-01-23 21:34:23

标签: ruby-on-rails ruby variables

我正在关注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定义在哪里?

3 个答案:

答案 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