我目前正在使用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
答案 0 :(得分:0)
Rails的自动加载机制使用其约定来加载模块。作为Rails的约定,您的文件名和模块名称应该匹配。这样,将app/models/wizards
更改为app/models/intro_quiz_steps
即可。