从Rails Edge guide:
4.3.2使用由应用
提供由于滑轨控制器通常分担之类的认证和访问会话变量代码的控制器,在默认情况下,他们从ApplicationController中继承。然而,Rails引擎的作用域是独立于主应用程序运行,因此每个引擎都可以获得一个有作用域的ApplicationController。该命名空间可防止代码冲突,但引擎控制器通常应访问主应用程序的ApplicationController中的方法。提供此访问的简单方法是将引擎的作用域ApplicationController从主应用程序的ApplicationController继承。对于我们Blorgh引擎,这将改变应用程序/控制器/ blorgh/application_controller.rb做的样子:
class Blorgh::ApplicationController < ApplicationController
end
默认情况下,发动机控制器从Blorgh继承:: ApplicationController的。因此,在做出这个改变之后,他们将可以访问主应用程序ApplicationController,就像它们是主应用程序的一部分一样。
此更改的确需要引擎从具有ApplicationController的Rails应用程序运行。