2011-03-07 76 views
10

我試圖訪問位於我的應用程序的lib目錄中的模塊中的函數。 (LIB/search.rb)訪問lib目錄中的模塊(Ruby on rails)

我其實想獲得郵政編碼搜索工作: http://joshhuckabee.com/simple-zip-code-perimeter-search-rails

的lib/search.rb

module Search 
    def zip_code_perimeter_search(zip, radius) 
    #code 
    end 
end 

我想打電話給zip_code_perimeter_search函數從軌道控制檯或從我的控制器,兩次我得到未定義的方法。有任何想法嗎?

回答

15

在控制檯/控制器:

include Search 
zip_code_perimeter_search(zip, radius) 

如果它在Rails 3中沒有自動加載,在你的config/application.rb中的文件,你可以這樣做:

# Custom directories with classes and modules you want to be autoloadable. 
config.autoload_paths += Dir["#{config.root}/lib/**/"] 
+1

謝謝,我也不得不做的lib /搜索一個要求。我想rails 3不會自動加載lib。 – 2011-03-07 15:43:41

+0

我編輯了答案。如果您在application.rb文件中配置加載目錄設置,則不需要「需要」文件。 – Shreyas 2011-03-07 15:59:38

+0

+1非常感謝! – ecoologic 2011-03-17 22:46:54

2

對於調用模塊方法,直接將其包含在一個類中,然後在類實例中調用它。

Class call_module_method 
    include Search 
end 

現在

call_module_method.new.zip_code_perimeter_search(zip, radius) 

將評估裏面的代碼方法zip_code_perimeter_search(zip, radius)