Ruby on rails 红宝石命名器
好吧,我是个新手。我知道发生这个错误是因为我没有正确理解如何调用方法。你能帮我理解这里出了什么问题吗 ThingController#索引中的命名错误 未定义Thing::Backend:类的“initialized”方法 从ThingController.rb的错误部分:Ruby on rails 红宝石命名器,ruby-on-rails,ruby,Ruby On Rails,Ruby,好吧,我是个新手。我知道发生这个错误是因为我没有正确理解如何调用方法。你能帮我理解这里出了什么问题吗 ThingController#索引中的命名错误 未定义Thing::Backend:类的“initialized”方法 从ThingController.rb的错误部分: class ThingController def init_things Backend.init_things unless Backend.initialized? end t = Thin
class ThingController
def init_things
Backend.init_things unless Backend.initialized?
end
t = ThingController.new
t.init_things
end
内部Backend.rb
class Backend
# checks if the things hash is initialized
def initialized?
@initialized ||= false
end
# loads things
def init_things
puts "I've loaded a bunch of files into a hash"
@initialized = true
end
end
我没有正确调用该方法,并且在internet上找不到对此错误的任何明确解释。请帮忙
谢谢您已将
初始化?
声明为实例方法,但正在调用它,就像调用类方法一样 问题似乎在于您在后端中声明的初始化方法是一个实例方法。然后调用Backend.initialized?
时,您正在调用后端
类的类方法initialized?
。此方法未定义,因此会引发NoMethodError
。您可以通过使用def self.initialized?
声明方法来解决此问题。如果你真的希望这是一个类方法,你可能需要考虑你的代码的其余部分是如何组织的。
有关类与实例方法的更多信息,请访问,谢谢大家。你已经回答了我的问题,并帮助我解决了这个问题。Railstips看起来也是一个非常有用的博客。