Ruby on rails 为什么我的Rails可安装引擎不能正确加载助手方法?

Ruby on rails 为什么我的Rails可安装引擎不能正确加载助手方法?,ruby-on-rails,ruby-on-rails-3.2,rubygems,Ruby On Rails,Ruby On Rails 3.2,Rubygems,我已经建立了一个轨道宝石,作为一个引擎安装 引擎的作用域是它自己的命名空间 在引擎中,有一个MyEngine::ApplicationHelper模块,它添加了一系列视图辅助方法 在我的应用程序布局中,我提到了其中一些方法 当我第一次以开发模式加载任何页面时,我得到一个NoMethodError,抱怨该方法(在gem的ApplicationHelper中定义)不存在 一旦我在我的应用程序中编辑了ApplicationController,问题就会自行解决 有些东西告诉我这是由于Rails的自动加

我已经建立了一个轨道宝石,作为一个引擎安装

引擎的作用域是它自己的命名空间

在引擎中,有一个
MyEngine::ApplicationHelper
模块,它添加了一系列视图辅助方法

在我的应用程序布局中,我提到了其中一些方法

当我第一次以开发模式加载任何页面时,我得到一个
NoMethodError
,抱怨该方法(在gem的
ApplicationHelper
中定义)不存在

一旦我在我的应用程序中编辑了
ApplicationController
,问题就会自行解决

有些东西告诉我这是由于Rails的自动加载最近的变化;我使用的是Rails 3.2.2


但是,我一辈子都不明白为什么这不能正常工作://

我认为Rails指南已经找到了答案

要在应用程序中包含引擎中的特定帮助程序,请执行以下操作:

class ApplicationController < ActionController::Base
  helper MyEngine::ApplicationHelper
end
class ApplicationController < ActionController::Base
  helper MyEngine::Engine.helpers
end
class ApplicationController
要在应用程序中包含引擎中的所有帮助程序,请执行以下操作:

class ApplicationController < ActionController::Base
  helper MyEngine::ApplicationHelper
end
class ApplicationController < ActionController::Base
  helper MyEngine::Engine.helpers
end
class ApplicationController
要加载引擎的
GemName::ApplicationHelper
以在引擎本身的视图中使用,我在
引擎.rb中添加了以下内容:

module GemName
  class Engine < ::Rails::Engine
    isolate_namespace GemName

    initializer 'local_helper.action_controller' do
      ActiveSupport.on_load :action_controller do
        helper GemName::ApplicationHelper
      end
    end
  end
end
模块名称
类引擎<::Rails::引擎
隔离名称空间名称
初始值设定项'local\u helper.action\u controller'do
ActiveSupport.on\u加载:操作\u控制器执行
助手名称::ApplicationHelper
结束
结束
结束
结束

我面临同样的问题,可能是因为(更快的开发模式和路由)。如果您找到了解决方案,请发布它,如果我找到了解决方案,请让您知道。我们如何将主应用程序帮助程序访问到引擎的视图?@AmitPatel(或其他偶然发现此问题的人)
helper Application::ApplicationHelper
帮助我将应用程序的应用程序帮助程序加载到引擎控制器中(我已覆盖)。其他的也可以这样添加。