关于Rails范围路由,guides状态:
如果你想路由/文章(没有前缀/ admin) Admin :: ArticlesController,您可以使用:
然后提供以下示例:
scope module: 'admin' do
resources :articles, :comments
end
到目前为止,除了一个小细节之外这么好:我注意到ArticlesController
也需要在/admin
之下。换句话说,为了确定工作范围,我需要做两件不同的事情:
ArticlesController
放入名为Admin
的模块中并将其转为:Admin::ArticlesController
。Admin::ArticlesController
从app/controllers
移至app/controllers/admin
。我想知道第二种情况。为什么我们必须将文章控制器移到admin
文件夹下才能工作?我们将ArticlesController
放在模块下是不够的?
答案 0 :(得分:0)
在此博客post中找到了对我的问题的一个很好的解释。
它基本上总结了这个:
引用了卸载的常量
Foo::Bar::Baz
。 Ruby无法解决它,并调用Foo::Bar.const_missing("Baz")
。 Rails然后:
- 在autoload_paths中查找
foo/bar/baz.rb
如果找到匹配的文件,则会以推测方式加载:
- 如果定义了正确的常量,则返回
- 否则会引发错误
如果找不到匹配的文件,则会查找
Foo::Baz
,然后是Baz
,除非它们已经定义- 如果没有任何候选常量可以加载,则会引发
醇>NameError