【问题标题】:Conserns in Rails 5 are not loadingRails 5 中的问题未加载
【发布时间】:2017-03-08 16:50:19
【问题描述】:

我一辈子都无法在我正在构建的应用程序中加载。我将其用于数据表的服务器端处理。

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

  • 我已经检查了另一个文件中提到的文件的大小写 发布。
  • 我已经尝试过使用和不使用“扩展 模块内的 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
[...]

【问题讨论】:

    标签: ruby ruby-on-rails-5


    【解决方案1】:

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

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

    【讨论】:

    • 这已修复,非常感谢!我把头发拉了好几个小时,然后大喊“你想从我这里得到什么?!”在我的电脑上,所以很尴尬就是这么简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多