Rails"自动"路线不起作用,必须用get"控制器/方法"每次?

时间:2012-06-21 17:05:58

标签: ruby-on-rails-3 routes

我做了

rails generate controller home index

但它将此行添加到我的routes.rb

get "home/index"

我认为Rails可以自动从URL中推断控制器/方法吗?为什么我需要指定每个获取/发布页面?

这是我的完整routes.rb文件:

Callisto2::Application.routes.draw do
  root :to => "home#index"
  resources :assets
end

root“/”工作正常。 / assets / *也是如此。

/ home / index有什么问题?我收到错误:

路由错误

No route matches [GET] "/home/index"

尝试运行rake路线以获取有关可用路线的更多信息。

rake routes(以apache用户身份运行)给出了以下输出:

root  / home#index

感谢您的任何澄清。不知道我错过了什么。

编辑:我没有说清楚:我从routes.rb手动删除了get / home / index以保持该文件干净。

2 个答案:

答案 0 :(得分:4)

Rails用于在路径文件的底部添加所谓的catch all route:

match ':controller(/:action(/:id(.:format)))'

这些网址没有任何“自动”或神奇的信息,只是每个铁路应用都是在路线中开始使用此路线.rb

这已经失宠了,至少部分是因为它让一切都可以获得,而

resources :books

使用适当的http动词添加每个路由。显式列出路由也比rails启动时简单得多。

答案 1 :(得分:1)

如果您的控制器为home且操作为index,则您的路径仅为/home

您可以找到更多信息here