为了清晰起见,我决定将Rails应用程序分解成不同的模块,并且作为其中的一部分,我希望每个模块都有自己的ApplicationController。所以,我经历了和每个模块,像这样定义的应用程序控制器:类继承和Ruby模块
module Login
class ApplicationController < ::ApplicationController
...
end
end
然后,我创建登录模块在不同的控制器:
module Login
class HomeController < ApplicationController
end
end
我的期望是,这将首先搜索应用程序控制器的登录模块,但是从我所看到的它实际上继承了全局应用程序控制器(我在Login :: ApplicationController中做出的任何声明都未找到)。我已经搜索了一些关于这方面的信息,但一直没能弄清楚为什么它在顶层名称空间中使用ApplicationController而不是Login中的。 HomeController继承自Login :: ApplicationController,它的工作原理就很好,但我想知道为什么没有Login ::前缀将无法工作。
正如一个全面的检查,是什么第几类输出,当你从铁轨控制台运行'登录:: HomeController.ancestors'? – rossta
有趣的是,Login :: ApplicationController实际上是在那里列出的,但是before_filters和其他调用似乎不能从它运行> –
您可以粘贴控制器的代码并给出一些不起作用的示例吗? – rossta