0

クラス内から外部メソッドにアクセスする方法はありますか? 例えば:

.haml ファイル (したがって内部class Haml::Engine)を使用class Tumblrして、 をメソッドで定義しself.renderます。Tumblrクラスの外では#haml_concat完全に機能しますが、NameErrorinside を返します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>

4

1 に答える 1

2

メソッドの受信者を指定しない場合、ruby は現在のオブジェクトのクラスとそのすべての祖先まで検索します。

つまり、祖先Haml::EngineのリストにTumblrないため、ruby はこのメソッドを見つけることができません。解決策は、メソッドを明示的に呼び出すオブジェクトを指定することです。

そして、本当にTumblrhamlファイル内でクラスを定義していますか? それは非常に悪いアプローチのように見えます。

于 2012-05-16T22:28:15.833 に答える