如何在主应用程序中合并Rails引擎ApplicationController方法?

如何将Rails引擎ApplicationController(它的方法)合并到主应用程序中? 我需要访问这些引擎控制器方法,并且我想在不使用主应用程序的ApplicationController中的“Include”的情况下执行此操作。

module MyEngine class Engine < Rails::Engine initializer "myengine.load_helpers" do ActiveSupport.on_load(:action_controller) do include MyEngine::Helpers end end end end 

以上内容发布在从引擎到应用程序添加before_filter的方法中 ,但我的理解是帮助程序只能查看,而我需要在控制器中访问它们。

之前我做过一个名为dynamic_menu的rails gem

基本上它看起来像

 require 'dynamic_menu' module DynamicMenu class Engine < Rails::Engine initializer "dynamic_menu.menu_items" do |app| ActionController::Base.send :include, DynamicMenu::MenuItems end end end 

所以我会假设你想要的那个

 require 'myEngine' class Engine < Rails::Engine initializer "myengine.load_helpers" do |app| ActionController::Base.send :include, MyEngine::Helpers end end 

您想要添加您在lib中使用的.rb文件的要求,然后它只涉及将模块发送到ActionController :: Base

在github上看到我的gem,它本质上非常简单,并且可以提供一些指导。 评论,我可以解释一下。