我为嵌套资源的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
复制相似问题