Ruby 在类中包含的嵌套模块中调用方法

Ruby 在类中包含的嵌套模块中调用方法,ruby,module,Ruby,Module,我有以下配置: module A module B def foo puts "foo" end end end class C include A end c = C.new c.foo NoMethodError: undefined method `foo' for #<C:0x8765284> 模块A 模块B 德福 放“福” 结束 结束 结束 C类 包括 结束 c=c新 c、 福 NoMethodError:未定义的方法'foo'

我有以下配置:

module A
  module B
    def foo
      puts "foo"
    end
  end
end

class C
  include A
end

c = C.new
c.foo
NoMethodError: undefined method `foo' for #<C:0x8765284>
模块A
模块B
德福
放“福”
结束
结束
结束
C类
包括
结束
c=c新
c、 福
NoMethodError:未定义的方法'foo'用于#
我如何实现上述目标

谢谢。

模块B是在A中“定义”的,而不是在A中“包含”的。这就是为什么在C中包含A模块时无法访问#foo实例方法的原因。您可以执行以下操作:

class C
  include A::B
end

C.new.foo

当包含
A
时,可以使用
included
回调使
B
包含

module A
 def A.included(klass)
  klass.include B
 end

 module B
  def foo
   puts "foo"
  end
 end
end

class C
 include A
end
下面的方法行得通

c = C.new
c.foo