考虑我有一个位于/lib/foo/bar/baz.rb
的课程,定义如下:
module Foo
module Bar
class Baz
def initialize
self.name = 'Baz'
end
end
end
end
我还有以下控制器/controllers/my_controller.rb
,定义如下:
class MyController < ApplicationController
def index
render json: ::Foo::Bar::Baz.new
end
end
按照预期输出JSON {name: "Baz"}
。
问题是如果我尝试包含Foo::Bar
模块,那么每次我想使用它时,我都不必将它添加到Baz
类名:
class MyController < ApplicationController
include ::Foo::Bar
def index
render json: ::Baz.new
end
end
返回以下错误消息:uninitialized constant Baz
。
为什么???
答案 0 :(得分:0)
我想你应该试试
include ::Foo::Bar
...
render json: Baz.new
答案 1 :(得分:0)
::Baz
确保在顶级命名空间中找到模块Baz
,因此您不应使用此语法。 render json: Baz.new
应该有用。