2010-06-16 93 views
0

我需要在我的lib類中使用函數「image_path」。我試過這個(和其他幾個變化):在另一個模型/類/庫中包含一個類

class CustomHelpers::Base 
    include ActionView::Helpers::AssetTagHelper 
    def self.image_url(source) 
    abs_path = image_path(source) 
    unless abs_path =~ /^http/ 
     abs_path = "#{request.protocol}#{request.host_with_port}#{abs_path}" 
    end 
    abs_path 
    end 
end 

但它沒有奏效。我做對了嗎?

另一個問題是,我如何找到合適的課程?例如,如果我看看這個模塊:http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html是否有經驗法則,如何將該模塊包含在模型/庫/類/其他任何內容中?

回答

3

您包含一個模塊,因此它的所有方法都在InstanceMethods中。

但您嘗試通過ClassMethods調用它。

所以儘量extend ActionView::Helpers::AssetTagHelper,不包括它

+0

謝謝您的回答,非常感謝。然而,我得到這個錯誤:ActionView :: Helper :: AssetTagHelper:模塊的undefined方法'image_path'是什麼意思? – jaycode 2010-06-17 04:34:29

+0

這是如果你擴展AssetTagHelper在你的課堂上? – shingara 2010-06-17 06:55:54

+0

謝謝!我現在知道擴展和包含之間的區別,現在你的答案對我來說意義重大。學習基礎知識非常重要,顯然 – jaycode 2010-08-27 16:51:23

0

最好是把所有這些類下的一些目錄,包括在autoload_paths這樣的路徑。所以如果不得不包括lib,演示者作業目錄然後這就是我將如何autoload他們在我的應用程序。

的config/application.rb中

config.autoload_paths += ["#{config.root}/lib", './app/jobs', './app/presenters'] 
相關問題