Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails无法加载模块链_Ruby On Rails_Ruby_Rails Engines - Fatal编程技术网

Ruby on rails Rails无法加载模块链

Ruby on rails Rails无法加载模块链,ruby-on-rails,ruby,rails-engines,Ruby On Rails,Ruby,Rails Engines,我正在建造一个Rails引擎。我定义了这样一个控制器 module A::B::C::D::E extend ActiveSupport::Concern # module stuff ... end class ExamplesController < ApplicationController include A::B::C::D::E # controller stuff ... end 为什么会出现此错误?因为模块在您使用时不存在。 由于未定义A,Ruby

我正在建造一个Rails引擎。我定义了这样一个控制器

module A::B::C::D::E
  extend ActiveSupport::Concern

  # module stuff ... 
end

class ExamplesController < ApplicationController
  include A::B::C::D::E

  # controller stuff ...
end

为什么会出现此错误?

因为模块在您使用时不存在。 由于未定义
A
,Ruby不知道它是什么

请注意,
是用于查找的范围解析运算符,而不是定义类似命名空间的层次结构

如果您首先定义了
A
,它将起作用:

module A
end
然后
B

module A::B
end
然后
C

module A::B::C
end
等等

当然,您也可以这样做:

module A
  module B
    module C
      module D
        module E
        end
      end
    end
  end
end
module A
  module B
    module C
      module D
        module E
        end
      end
    end
  end
end