如何在Rails应用程序中使用模块

Tam*_*iev 7 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我刚刚在/ lib文件夹中创建了一个模块location.rb,其中包含以下内容:

module Location
  def self.my_zipcode()
    zip_code = "11215"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在在我的控制器中我试图调用"my_zipcode"方法:

class DirectoryController < ApplicationController
  def search
    require 'location'
    zip_code = Location.my_zipcode()
  end
end
Run Code Online (Sandbox Code Playgroud)

但它抛出一个错误:

位置:模块的未定义方法`my_zipcode'

out*_*344 13

您还可以将以下内容添加到config/application.rb中

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

并且它应该自动加载您的模块而无需重新启动rails.


cod*_*tim 5

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

  • 我经常在开发时添加一个app/modules文件夹.这样他们就可以在每个请求上重新加载. (2认同)