1

我做了

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

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

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

路由错误

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

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

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

root  / home#index

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

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

4

2 回答 2

4

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

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

这些 url 没有什么“自动”或神奇的,只是每个 rails 应用程序都在他们的 routes.rb 中使用这条路线开始

这已经失宠,至少部分是因为它使一切都可以通过 get 访问,而

resources :books

使用适当的 http 动词添加每个路由。与 Rails 刚开始时相比,显式列出路由也少了很多。

于 2012-06-21T17:15:33.043 回答
1

如果您的控制器是home并且动作是index您的路径就是/home.

您可以在此处找到更多信息。

于 2012-06-21T17:12:46.013 回答