2011-12-15 4 views
0

railsコントローラの保護されたメソッドについては、helper_methodを使用してそのビューを使用可能にします。デフォルトでは、ビューへのヘルパーヘルパーのメソッドは、すべてのビューで共有されます(アクセス可能)。私の質問は、helper_methodで宣言されているコントローラメソッドはすべてのビューで共有(アクセス可能)ですか?helper_methodの後のコントローラのメソッドは、レールのすべてのビューで使用可能です。

おかげ

答えて

1

あなたはhelper_methodとヘルパーとしてのコントローラメソッドを宣言した場合、ヘルパーは、コントローラのみに属するビューで利用できるようになります。

すべてのビューでヘルパーを使用できるようにするには、コントローラメソッドを定義し、ヘルパーをアプリケーションコントローラに宣言する必要があります。

興味のある方は、これは、関連するRailsのコードです:

def helper_method(*meths) 
    meths.flatten! 
    self._helper_methods += meths 

    meths.each do |meth| 
    _helpers.class_eval <<-ruby_eval, __FILE__, __LINE__ + 1 
     def #{meth}(*args, &blk) 
     controller.send(%(#{meth}), *args, &blk) 
     end 
    ruby_eval 
    end 
end 

あなたが呼ばれたときに、ヘルパーがちょうどコントローラ上の同じ名前のメソッドを呼び出すことがわかります。

関連する問題