2010-06-16 2 views
0

lib 클래스에서 "image_path"함수를 사용해야합니다. 나는 이것을 시도했다. (다른 변형들) :다른 모델/클래스/lib에 클래스 포함

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에서 호출 해보십시오.

는 그래서 베스트

+0

감사합니다, 많은 감사. 그러나 나는이 오류가 : ActionView :: Helpers :: AssetTagHelper에 대한 정의되지 않은 메서드'image_path ': Module 그것은 무엇을 의미합니까? – jaycode

+0

클래스에서 AssetTagHelper를 확장하면 어떻게됩니까? – shingara

+0

감사합니다. 이제는 확장과 포함의 차이점을 알았으므로 이제는 대답이 나에게 의미가 있습니다. 기본 사항을 배우는 것은 매우 중요합니다. – jaycode

0

일부 디렉토리에서 이러한 모든 클래스를 넣어 autoload_paths 이러한 경로를 포함하는 것 포함하지, extend ActionView::Helpers::AssetTagHelper을 시도합니다. 그래서 lib, 발표자작업 디렉토리를 포함해야한다면이 방법은 내 응용 프로그램에서 자동로드하는 방법입니다. 답변에 대한

설정은/application.rb

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