2017-08-02 100 views
0

关于Rails的范围的路由,该guides状态:Rails的范围:模块文件路径

如果您要路由/条(不带前缀/管理员)到 管理:: ArticlesController,你可以使用:

,然后提供下面的例子:

scope module: 'admin' do 
    resources :articles, :comments 
end 

到目前为止,除了一个小细节那么好:我注意到, ArticlesController也需要去/admin。换言之,针对范围界定工作,我需要做2件不同的事情:

  1. 放置ArticlesController一个名为Admin模块中,并把它转化为这样:Admin::ArticlesController
  2. Admin::ArticlesControllerapp/controllers改为app/controllers/admin

我在想这里的第二种情况。为什么我们必须将文章控制器移动到admin文件夹下才能使用?我们是否将ArticlesController放置在模块下是不够的?

+0

看到这个问题刚问https://开头stackoverflow.com/questions/45453660/do-i-need-to-create-folder-hierarchy-for-nested-module-class-in-rails。答案基本相同 –

+0

我还是很困惑... – kstratis

回答

0

在本博客post中发现了一个很好的解释。

它基本上总结了这样:

空载Foo::Bar::Baz引用不变。 Ruby无法解决它,并调用Foo::Bar.const_missing("Baz")。轨则:

  1. 如果找到一个匹配的文件autoload_paths中看起来对foo/bar/baz.rb
  2. ,它被推测装载:

    • 如果正确的常量定义,则返回
    • 否则,错误提出
  3. 如果找不到匹配的文件,它看起来不是为Foo::Baz,然后Baz,除非他们已经被定义

  4. 如果没有候选人常量可以加载,它提出了一个NameError