我解决了这个问题。这是引导顺序的问题。我Engine::AnswersController
的Engine::ApplicationController
. 在我的代码中,我只是继承自ApplicationController
. 这意味着,因为Engine::AnswerController
不知道Engine::ApplicationController
它错误地继承自主应用程序ApplicationController
而不是引擎的ApplicationController
.
修复方法是通过明确引擎命名空间来强制答案控制器从引擎而不是主应用程序继承:
Engine::AnswersController < Engine::ApplicationController
我知道这个问题对我的应用程序来说相当特殊,但我如何得出解决方案可能对其他人有帮助。如果您遇到此类问题,请进入某种类型的调试器(我使用Pry)并开始检查。具体来说,检查加载了哪些类并仔细查看继承链(即Engine::ApplicationController.ancestors
)。寻找任何看起来奇怪的东西。
此外,如果问题与引擎相关,您可能需要在引擎和主应用程序中都放置调试器。调试引擎可能很困难,因为引擎中发生的错误可能不一定会冒泡到主应用程序。
非常感谢tjbladez帮助我解决这个问题。