首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未初始化常数(NameError)同时包含模块

未初始化常数(NameError)同时包含模块
EN

Stack Overflow用户
提问于 2014-10-14 10:23:46
回答 1查看 4.3K关注 0票数 0

我正在为我的Rails应用程序写创业板,它计算一些东西,并使用类和模块。

这是文件结构。

代码语言:javascript
复制
root
->lib
-->finances
--->version.rb
--->finances.rb
--->calculator
----->formulas.rb
--->finalize
---->schedule.rb
-->finances.rb

现在root/lib/finances.rb

代码语言:javascript
复制
require "finances/version"
require "finances/finances"
require "finances/finalize/schedule"
require "finances/calculator/formulas"

root/lib/finances/calculator/formulas.rb

代码语言:javascript
复制
module Calculator
  module Formulas
    def method
    end
  end
end

root/lib/finances/finalize/schedule.rb

代码语言:javascript
复制
module Finalize
  class Schedule
    include ::Calculator::Formulas
  end
end

但我得到了uninitialized constant Calculator (NameError)

如果我试着用

代码语言:javascript
复制
::Calculator::Formulas.method

它抛出“计算器::公式:模型”的NoMethodError (undefined method方法):

我到底做错了什么。我似乎无法解决这个问题。有人能帮上忙吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-14 10:25:48

您尝试使用method作为Formulas‘模块方法’,而将它定义为常规实例方法。因此,应该在RepaymentSchedule实例上调用它:

代码语言:javascript
复制
rs = RepaymentSchedule.new
rs.method

此外,您还需要确保您的装载顺序是正确的。在这里,您应该在加载require类之前包含Formulas模块的Formulas文件,否则会得到未初始化的常量错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26358457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档