Ruby on rails 红宝石命名器

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

好吧,我是个新手。我知道发生这个错误是因为我没有正确理解如何调用方法。你能帮我理解这里出了什么问题吗

ThingController#索引中的命名错误 未定义Thing::Backend:类的“initialized”方法

从ThingController.rb的错误部分:

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看起来也是一个非常有用的博客。