2012-03-29 129 views
7

我刚刚创建了一个模块location.rb/lib目录文件夹下面的内容Rails应用程序模块:如何使用

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

现在在我的控制器我试图打电话给“my_zipcode”方法:

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

但它引发错误:

undefined method `my_zipcode' for Location:Module

+0

试试'Location :: my_zipcode'。 – 2012-03-29 00:32:19

+0

仍然是一样的错误。 – 2012-03-29 00:33:24

+0

适用于我(这就是它应该)。 – 2012-03-29 00:33:53

回答

5

您可能必须重新启动rails服务器才能识别lib目录中的内容。

+1

你知道如果我每次更新模块代码时都必须重新启动服务器吗? – 2012-03-29 00:55:37

+0

这就是我通常要做的事情,我不知道如何避开它 – 2012-03-29 00:56:29

+2

我通常会在开发过程中添加一个应用程序/模块文件夹。这样他们就可以在每次请求时重新加载。 – 2012-03-29 00:58:16

13

您还可以添加以下到你的config/application.rb中

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

,它应该自动加载你的模块,而无需重新启动导轨。

+0

谢谢outside2344,非常好的解决方案:) – 2012-03-29 04:47:59