如何将 Rails 引擎 ApplicationController(它的方法)合并到主应用程序中?我需要访问这些引擎控制器方法,并且我想在不使用主应用程序的 ApplicationController 中的“包含”的情况下执行此操作。
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 文件的 require,然后只需将模块发送到 ActionController::Base
看看我的宝石github它本质上非常简单,也许可以提供一些指导。评论,我可以进一步解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)