【问题标题】:Rails: Module failing to autoload, raises NameErrorRails:模块无法自动加载,引发 NameError
【发布时间】:2018-08-26 04:19:24
【问题描述】:

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

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

module IntroQuizSteps

  class Base
    include ActiveModel::Model
  end

  class StepOne < Base

    attr_accessor :own

    validates :own, presence: true

  end

end

【问题讨论】:

    标签: ruby-on-rails ruby autoload wizard


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2019-03-14
      • 2021-04-03
      • 1970-01-01
      • 2018-12-05
      • 2017-11-24
      • 1970-01-01
      相关资源
      最近更新 更多