我在lib文件夹中创建了一个新的库文件sampler.rb
。将此视为文件的内容
module Sampler
def sample_tester
"test"
end
end
我已将其包含在application_controller中,并在config\initializers
中添加了一个require语句。当我尝试从我的控制器访问方法sample_tester时,我收到以下错误
undefined local variable or method `sample_tester` for #<BlogsController:0xb8fbac8>
我错过了什么吗?
答案 0 :(得分:1)
因为看起来你不是在创建一个这样的实例,我的第一个猜测是你需要将它定义为一个类方法,以便它可以这样调用:Sampler.sample_tester
。
在您的文件中,您可以采用以下两种方式之一:
# first way
module Sampler
def self.sample_tester
"test"
end
end
# second way
module Sampler
class << self
def sample_tester
"test"
end
end
如果你想定义一些类方法,第二种方法更好。
答案 1 :(得分:1)
如果您希望将模块方法定义为类方法,则需要使用extend而不是include:
module Mod
def bla
puts "bla"
end
end
class String
include Mod
end
String.bla rescue puts $! # => undefined method `bla' for String:Class
class String
extend Mod
end
puts String.bla # => bla