Rails范围:模块文件路径

时间:2017-08-02 07:36:06

标签: ruby-on-rails rails-routing

关于Rails范围路由,guides状态:

  

如果你想路由/文章(没有前缀/ admin)     Admin :: ArticlesController,您可以使用:

然后提供以下示例:

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

到目前为止,除了一个小细节之外这么好:我注意到ArticlesController也需要在/admin之下。换句话说,为了确定工作范围,我需要做两件不同的事情:

  1. ArticlesController放入名为Admin的模块中并将其转为:Admin::ArticlesController
  2. Admin::ArticlesControllerapp/controllers移至app/controllers/admin
  3. 我想知道第二种情况。为什么我们必须将文章控制器移到admin文件夹下才能工作?我们将ArticlesController放在模块下是不够的?

1 个答案:

答案 0 :(得分:0)

在此博客post中找到了对我的问题的一个很好的解释。

它基本上总结了这个:

  

引用了卸载的常量Foo::Bar::Baz。 Ruby无法解决它,并调用Foo::Bar.const_missing("Baz")。 Rails然后:

     
      
  1. 在autoload_paths中查找foo/bar/baz.rb
  2.   
  3. 如果找到匹配的文件,则会以推测方式加载:

         
        
    • 如果定义了正确的常量,则返回
    •   
    • 否则会引发错误
    •   
  4.   
  5. 如果找不到匹配的文件,则会查找Foo::Baz,然后是Baz,除非它们已经定义

  6.   
  7. 如果没有任何候选常量可以加载,则会引发NameError
  8.