Rails:模块无法自动加载,引发NameError

时间:2018-03-17 02:25:51

标签: ruby-on-rails ruby autoload wizard

我目前正在使用rails构建一个多步骤表单,并决定通过为表单的每个步骤创建一个类,并将所有这些类放在名为IntroQuizSteps的模块中。到目前为止,我的模块非常简单,包括“Base”类和“StepOne”类,它是“Base”的子类。我打开了我的rails控制台并尝试创建我的“Base”类的新实例(使用命令IntroQuizSteps :: Base.new),看看是否一切正常但每次收到错误“NameError:uninitialized constant IntroQuizSteps ”。我不知道为什么会发生这种情况,因为这个模块存在于app / models文件夹中,据我所知,“app”目录中的所有内容都应该自动加载。关于如何在我的项目中成功包含此模块的任何帮助将不胜感激。

以下是我的IntroQuizSteps模块中app / models / wizards文件夹中的代码:

module IntroQuizSteps

  class Base
    include ActiveModel::Model
  end

  class StepOne < Base

    attr_accessor :own

    validates :own, presence: true

  end

end

1 个答案:

答案 0 :(得分:0)

Rails的自动加载机制使用其约定来加载模块。作为Rails的约定,您的文件名和模块名称应该匹配。这样,将app/models/wizards更改为app/models/intro_quiz_steps即可。