2012-03-29 15 views
7

I właśnie utworzony moduł location.rb wewnątrz /lib folderze z następujących treści:Jak korzystać z modułów aplikacji Rails

module Location 
    def self.my_zipcode() 
    zip_code = "11215" 
    end 
end 

A teraz w moim kontrolera próbuję zadzwonić „my_zipcode” metoda:

class DirectoryController < ApplicationController 
    def search 
    require 'location' 
    zip_code = Location.my_zipcode() 
    end 
end 

Ale to zgłasza błąd:

undefined method `my_zipcode' for Location:Module

+0

Spróbuj "Lokalizacja :: mój_zipcode". –

+0

Wciąż ten sam błąd. –

+0

Działa dla mnie (i tak powinno być). –

Odpowiedz

5

Może być konieczne ponowne uruchomienie serwera szyny w celu rozpoznania elementów w katalogu lib.

+1

czy wiesz, czy muszę restartować serwer za każdym razem, gdy aktualizuję kod modułu? –

+0

to jest to, co zwykle muszę zrobić, nie jestem pewien, jak się z nim obejść. –

+2

Zwykle dodajem folder aplikacji/modułów, aby umieścić je podczas rozwijania. W ten sposób są ładowane na każde żądanie. –

13

Można również dodać następujące config/environment.rb

config.autoload_paths + =% m (# {config.root}/lib)

i powinien autoload modułu bez konieczności aby ponownie uruchomić szyny.

+0

Dzięki outside2344, bardzo ładne rozwiązanie :) –

Powiązane problemy