首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails 4.1无法自动加载命名空间类

Rails 4.1无法自动加载命名空间类
EN

Stack Overflow用户
提问于 2014-06-08 22:08:26
回答 1查看 1.2K关注 0票数 4

我为嵌套资源的urls做了一个助手

代码语言:javascript
代码运行次数:0
运行
复制
# app/urls/url.rb
module Url; end

然后

代码语言:javascript
代码运行次数:0
运行
复制
# app/urls/base.rb
module Url
  class Base
    # common code
  end
end

当我试图从Url::Base继承时,会出现一个LoadError

代码语言:javascript
代码运行次数:0
运行
复制
Unable to autoload constant Base, expected xxx/app/urls/base.rb to define it

我已经对它进行了一些调试,文件的来源是正确的,类被加载,但是检查被窃听了。这个错误似乎是在ActiveSupport::Dependencies#const_missing中产生的,它将Object传递为from_mod (<- -这是期望包含常数的变量),而不是Url

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
Url::Base # Raise LoadError
Url::Base # Works!

我还是不明白为什么const_missingObject而不是Url上触发.有人帮忙吗?我做错什么了?

编辑

好吧,再挖一遍,我知道发生了什么。Rails在PATH中搜索类似于PATH的文件路径;如果该文件不存在,它将尝试加载父模块(或类)中的常量,这就是为什么它将使用form_model = Object进行递归。

EN

回答 1

Stack Overflow用户

发布于 2014-06-08 23:13:18

好吧,再挖一遍,我知道发生了什么。Rails在PATH中搜索类似于PATH的文件路径;如果该文件不存在,它将尝试加载父模块(或类)中的常量,这就是为什么它将使用form_model = Object进行递归。

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

https://stackoverflow.com/questions/24111360

复制
相关文章

相似问题

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