2009-09-02 25 views
0

我正在寫一個插件,它向控制器添加一個方法並將其聲明爲輔助方法。如果它是靜態(而不是通過插件)完成的,它看起來像這樣:如何以編程方式確定哪些方法已被Rails中的控制器聲明爲「helper」方法?

# in RAILS_ROOT/app/controllers/stuffed_animals_controller.rb 
class StuffedAnimalsController < ActionController::Base 

    private 

    def bear 
    'Teddy Bear' 
    end 

    helper_method :bear 

end 

# in RAILS_ROOT/app/views/stuffed_animals/index.html.erb: 
<%= bear -%> 

它工作得很好。不過,我想測試一下:some_helper_method實際上是的輔助方法。我嘗試這樣做:

def test_declared_bear_as_helper_method 
    assert StuffedAnimalsController.helper_methods.include?(:bear) 
end 

不幸的是,ActionController::Base沒有:helper_methods類方法。任何人都知道我可以通過:helper_method獲得課程列表?

回答

0

Got it!

def test_declared_bear_as_helper_method 
    helper = Object.new 
    helper.extend StuffedAnimalsController.master_helper_module 
    assert helper.respond_to?(:bear) 
end 
相關問題