有没有办法从类中访问外部方法?例如:
使用.haml文件(因此在class Haml::Engine
内),定义class Tumblr
,方法self.render
。在Tumblr
班级之外,#haml_concat
功能完美,但在NameError
内返回Tumblr
。 #haml_concat
中定义了Haml::Helpers
。为什么#haml_concat
内的Tumblr
无法使用?
<击> 撞击>
<击>value = 42
class TestClass
def test_method
value
end
end
TestClass.new.value
# should ideally return 42
击> <击> 撞击>
现在这只返回NameError: undefined local variable or method 'value' for #<TestClass:0x00000000e24960>
。
答案 0 :(得分:2)
如果你没有指定方法的接收者,ruby会在当前对象的类中查找它,直到它的所有祖先。
所以,因为Haml::Engine
不在Tumblr
祖先的列表中,所以ruby找不到这个方法。解决方案是指定显式调用方法的对象。
并且,你真的在haml文件中定义Tumblr
类吗?这看起来非常糟糕。