Ruby on rails 3 铁路";“自动”;路线不';t工作,必须用get“指定;控制器/方法“;每一次?

Ruby on rails 3 铁路";“自动”;路线不';t工作,必须用get“指定;控制器/方法“;每一次?,ruby-on-rails-3,routes,Ruby On Rails 3,Routes,是的 rails生成控制器主索引 但它将这一行添加到my routes.rb 获取“主页/索引” 我认为Rails可以从URL自动推断控制器/方法?为什么我需要指定每个get/post页面 这是我完整的routes.rb文件: Callisto2::Application.routes.draw do root :to => "home#index" resources :assets end root“/”可以正常工作。/assets/*也是如此 /home/index有什么问

是的

rails生成控制器主索引

但它将这一行添加到my routes.rb

获取“主页/索引”

我认为Rails可以从URL自动推断控制器/方法?为什么我需要指定每个get/post页面

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

Callisto2::Application.routes.draw do
  root :to => "home#index"
  resources :assets
end
root“/”可以正常工作。/assets/*也是如此

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

路由错误

没有路径匹配[GET]“/home/index”

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

rake路由
(以apache用户身份运行)提供以下输出:

root  / home#index
谢谢你的澄清。不知道我错过了什么


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

如果您的控制器是
home
,而操作是
index
,那么您的路径就是
/home


您可以找到更多信息。

如果您的控制器是
主页
,操作是
索引
,您的路径就是
/home


您可以找到更多信息。

Rails用于在routes文件底部添加所谓的全包路由:

match ':controller(/:action(/:id(.:format)))'
这些URL并没有什么“自动”或神奇之处,只是每个rails应用程序都是从routes.rb中的这个路由开始的

这已经不受欢迎了,至少部分原因是它让所有的东西都变得容易获得,而

resources :books

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

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

match ':controller(/:action(/:id(.:format)))'
这些URL并没有什么“自动”或神奇之处,只是每个rails应用程序都是从routes.rb中的这个路由开始的

这已经不受欢迎了,至少部分原因是它让所有的东西都变得容易获得,而

resources :books

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

因此,rail generate应该在我的路由中添加“resources home”,但由于这会公开所有内容(即,将来可能不打算像“home/doX”这样可路由的所有方法都将可用),因此,如果构建一个模型,rails会添加资源路由。如果没有,它不会对您正在做的事情做出任何假设,只是为您传递给Generator的操作设置路线。So rail generate应该在我的路线中添加“资源主页”,但因为这会暴露一切(即,将来可能不会像“主页/doX”这样可路由的所有方法都将可用)如果构建一个模型,rails将添加资源丰富的路由。如果不是的话,它不会对你正在做的事情做任何假设,只是为你传递给generatornoob的动作设置路径,是的,我现在明白了。根据我过去的经验,我希望/home/调用index方法,但实际上它调用了/home/show?id=index,而index并不存在。我是在手动添加资源后发现的:home to route.rbnoob在这里,是的,我现在明白了。根据我过去的经验,我希望/home/调用index方法,但实际上它调用了/home/show?id=index,而index并不存在。我在手动添加资源后发现了这一点:home to route.rb