在另一个model / class / lib中包含一个Class

时间:2010-06-16 09:03:11

标签: ruby-on-rails ruby class include

我需要在我的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是否有经验法则如何将该模块包含在模型/库/类/其他任何内容中?

2 个答案:

答案 0 :(得分:3)

您包含一个模块,因此其上的所有方法都在InstanceMethods中。

但你尝试通过ClassMethods调用它。

请尝试extend ActionView::Helpers::AssetTagHelper,不要包含它

答案 1 :(得分:0)

最好将所有这些类放在某些目录下,并在autoload_paths中包含此类路径。因此,如果必须包含 lib 演示者作业目录,那么我就可以在我的应用中自动加载它们。

<强>配置/ application.rb中

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