从Hartl的Rails教程书中,静态页面的一些路由是automatically generated:
Rails.application.routes.draw do
get 'static_pages/home'
get 'static_pages/help'
root 'application#hello'
end
为什么“主页”和“帮助”路由没有控制器#动作?
例如。 get 'static_pages/home', to: 'static_pages_controller#home'
我能找到的最接近文档的是Rails指南路由页面的static segments section。
答案 0 :(得分:0)
路线
get 'static_pages/home'
get 'static_pages/help'
没有与之关联的控制器/操作,因为这些页面的内容不是从控制器动态生成的。它们很可能是在 public/static_pages/home
和public/static_pages/help
的文件系统上定义的。公共目录可用于直接提供静态内容,而无需使用控制器。
编辑:
如果static_pages确实引用了控制器,则在创建<name of controller>/<name of action
格式的路由时,很可能Rails能够派生控制器的名称和操作的名称。 Rails只假设“/”的左侧是控制器而右侧是动作。
答案 1 :(得分:0)
在浏览了一些文档后,发现没有任何相关内容,我看了一下源代码。似乎match
方法(get
是一个简写)正在调用get_to_from_path
(已定义here),它从提供的{{path
中提取控制器和方法信息。 1}},如果未提供to:
。
所以,对于这种情况,这个
get 'static_pages/home'
get 'static_pages/help'
映射到static_pages#home
和static_pages#help
。在路径中使用短划线(-
)而不是下划线(_
)也可以。
奇怪的是,这个功能没有记录,更多的是它在教程中使用而没有解释。