来自Rails Edge 指南:
4.3.2 使用应用程序提供的控制器
因为 Rails 控制器通常共享用于身份验证和访问会话变量之类的代码,默认情况下它们继承自 ApplicationController。然而,Rails 引擎的作用域是独立于主应用程序运行,因此每个引擎都有一个作用域 ApplicationController。此命名空间可防止代码冲突,但引擎控制器通常应该访问主应用程序的 ApplicationController 中的方法。提供此访问权限的一种简单方法是将引擎的作用域 ApplicationController 更改为从主应用程序的 ApplicationController 继承。对于我们的 Blorgh 引擎,这将通过将 app/controllers/blorgh/application_controller.rb 更改为如下所示来完成:
class Blorgh::ApplicationController < ApplicationController
end
默认情况下,引擎的控制器继承自 Blorgh::ApplicationController。因此,在进行此更改后,他们将可以访问主应用程序 ApplicationController,就好像它们是主应用程序的一部分一样。
此更改确实需要从具有 ApplicationController 的 Rails 应用程序运行引擎。