2017-03-08 64 views
0

我不能为我的生活得到consern加载我正在建立的应用程序。我使用这个用于带有数据表的服务器端处理。Conserns in Rails 5 are not loading

为了防万一,我正在包括模块的结构,在那里我有一个通用模块,其中包含通用模块的专用模块定义的一堆东西。目的是在不同表中使用不同类型数据的专用类中的定义,而不必重复一堆代码。

  • 我检查了另一个 后文中提到的文件的大小写。
  • 我已经尝试过在模块内部使用和不使用“扩展 ActiveSupport :: Concern”。
  • 我试过更改模块名称,以防 与其他东西冲突。
  • 我试过在前面添加“::” 的其他帖子。

我还没有算到了

错误:

ActionController::RoutingError (uninitialized constant MetatasksController::MetatasksDatatableModule): 

app/controllers/metatasks_controller.rb:2:in `<class:MetatasksController>' 
app/controllers/metatasks_controller.rb:1:in `<top (required)>' 

我控制器(/app/controllers/metatasks_controller.rb)具有这样的:

class MetatasksController < ApplicationController 
    include MetatasksDatatableModule 
    [...] 
end 

consern(/app/controllers/concerns/metatask_datatables_consern.rb)有:

module MetatasksDatatableModule 
    extend ActiveSupport::Concern 
    class MetatasksDatatable 
    include DatatableModule 
    [...] 
    end 
end 

广义数据表模块(/app/controllers/concerns/datatables_module.rb)具有这样的:

module DatatableModule 
    included do 
    [...] 
    end 
end 

我的自动加载路径包括的文件夹(编辑的关联性/隐私):

> rails r 'puts ActiveSupport::Dependencies.autoload_paths' 
[...] 
/home/<user>/sites/<appname>/app/controllers/concerns 
[...] 

回答

1

Rails很可能无法自动加载,因为文件名与模块名称不匹配,所以它不知道从哪里加载它们。

所以metatask_datatables_consern.rb应该叫metatasks_datatable_module.rbdatatables_module.rbdatatable_module.rb

+0

这个固定,太感谢你了!我拉着我的头发出来了几个小时,并大声地叫了起来:“你想从我那里得到什么?!”在我的电脑上,所以它非常尴尬,这是很简单的事情。 –