2012-03-29 24 views
7

tôi vừa tạo ra một module location.rb bên thư mục/lib với nội dung sau:Làm thế nào để sử dụng module trong ứng dụng Rails

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

Và bây giờ trong điều khiển của tôi đang cố gắng để gọi là "my_zipcode" phương pháp:

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

Nhưng nó ném một lỗi:

undefined method `my_zipcode' for Location:Module

+0

Thử 'Vị trí :: my_zipcode'. –

+0

Vẫn còn lỗi tương tự. –

+0

Làm việc cho tôi (và đó là những gì nó nên). –

Trả lời

5

Bạn có thể phải khởi động lại máy chủ đường ray để nó nhận ra nội dung trong thư mục lib.

+1

bạn có biết nếu tôi phải khởi động lại máy chủ mỗi khi tôi cập nhật mã mô-đun không? –

+0

đó là những gì tôi thường phải làm, tôi không chắc chắn làm thế nào để có được xung quanh nó –

+2

Tôi thường thêm một thư mục app/modules để đưa chúng vào trong khi phát triển. Bằng cách đó, chúng được tải lại theo mọi yêu cầu. –

13

Bạn cũng có thể thêm dòng sau vào cấu hình của bạn/application.rb

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

Và nó nên autoload module của bạn mà không cần phải để khởi động lại đường ray.

+0

Cảm ơn bên ngoài2344, giải pháp rất đẹp :) –

Các vấn đề liên quan