我为嵌套资源的urls做了一个助手
# app/urls/url.rb
module Url; end
然后
# app/urls/base.rb
module Url
class Base
# common code
end
end
当我试图从Url::Base
继承时,会出现一个LoadError
:
Unable to autoload constant Base, expected xxx/app/urls/base.rb to define it
我已经对它进行了一些调试,文件的来源是正确的,类被加载,但是检查被窃听了。这个错误似乎是在ActiveSupport::Dependencies#const_missing
中产生的,它将Object
传递为from_mod
(<- -这是期望包含常数的变量),而不是Url
。
试试这个:
Url::Base # Raise LoadError
Url::Base # Works!
我还是不明白为什么const_missing
在Object
而不是Url
上触发.有人帮忙吗?我做错什么了?
编辑
好吧,再挖一遍,我知道发生了什么。Rails在PATH
中搜索类似于PATH
的文件路径;如果该文件不存在,它将尝试加载父模块(或类)中的常量,这就是为什么它将使用form_model = Object
进行递归。
发布于 2014-06-08 23:13:18
好吧,再挖一遍,我知道发生了什么。Rails在PATH
中搜索类似于PATH
的文件路径;如果该文件不存在,它将尝试加载父模块(或类)中的常量,这就是为什么它将使用form_model = Object
进行递归。
https://stackoverflow.com/questions/24111360
复制相似问题