我正在构建一个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
当我启动Rails控制台rails console
时,出现以下错误,
uninitialized constant A::B (NameError)
为什么我会收到此错误?
答案 0 :(得分:2)
因为模块在您使用它时不存在。
由于未定义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