1

为了清楚起见,我决定将 Rails 应用程序分解为不同的模块,作为其中的一部分,我希望每个模块都有自己的 ApplicationController。所以我经历并为每个模块定义了一个应用程序控制器,如下所示:

module Login
  class ApplicationController < ::ApplicationController
    ...
  end
end

然后我会在登录模块中创建一个不同的控制器:

module Login
  class HomeController < ApplicationController

  end
end

我的期望是,这将首先搜索应用程序控制器的登录模块,但据我所见,它实际上是在继承全局应用程序控制器(我在 Login::ApplicationController 中所做的任何声明都不会被拾取)。我已经搜索了一些关于此的信息,但无法弄清楚为什么它在顶级名称空间中使用 ApplicationController 而不是 Login 中的那个。让 HomeController 从 Login::ApplicationController 继承它工作得很好,但我想了解为什么它在未来没有 Login:: 前缀时不能工作。

4

1 回答 1

0

尝试

module Login
  class HomeController < Login::ApplicationController

  end
end
于 2012-09-26T19:48:11.947 回答