Rails 5中的Conserns未加载

时间:2017-03-08 16:50:19

标签: ruby ruby-on-rails-5

我无法为我的生活获得加载到我正在构建的应用中的内容。我使用它来进行数据表的服务器端处理。

以防万一我弄乱了包含模块结构的东西,其中我有一个通用模块,其中包含一些由专用模块定义的东西,这些模块包含一般类模块。目的是在专用类中使用不同类型的数据中的定义,而不必重复一堆代码。

  • 我检查了另一个文件中的文件大小写 交。
  • 无论有没有"延伸,我都试过了 的ActiveSupport ::关注"在模块内部。
  • 我已尝试更改模块名称以防万一 它与其他东西发生了冲突。
  • 我试过添加" ::"在前 来自另一篇文章的包括。

我还没有进入

错误:

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 个答案:

答案 0 :(得分:1)

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

因此metatask_datatables_consern.rb应该被称为metatasks_datatable_module.rbdatatables_module.rb应该是datatable_module.rb