我正在使用Ruby on Rails 3,我正在尝试使用命名空间来实现模块。
在我的lib/
文件夹中,我有authorization.rb
文件:
module Authorizations
def Authorizations.message
return "flash_message"
end
end
在我的控制器中我有:
class Users::AccountsController < ApplicationController # 'Users' is the namespace
include Authorizations
def create
...
flash.now[:notice] = Authorizations.message
end
end
当我运行create
方法时,我收到此错误:
NoMethodError (undefined method 'message' for Authorizations:Module)
有什么问题?
在模块声明中我也尝试了这些
def Authorizations::message
...
# or
def message
...
以及那些不起作用。
答案 0 :(得分:2)
问题出在RAILS_ROOT/config/application.rb
。只需以这种方式加载lib/
文件夹:
config.autoload_paths += %W(#{config.root}/lib)
答案 1 :(得分:1)
module Authorizations
def message
return "flash_message"
end
end
然后
Authorizations::message
或如果包含在课程中,只需
... = message