【问题标题】:How to incorporate Rails Engine ApplicationController methods in a main app?如何在主应用程序中合并 Rails Engine ApplicationController 方法?
【发布时间】:2012-06-20 16:56:42
【问题描述】:

如何将 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

以上内容发布在A way to add before_filter from engine to application,但我的理解是助手只能查看可用,而我需要在我的控制器中访问它们。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    我之前为一个名为 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 上查看我的 gem,它本质上非常简单,也许可以提供一些指导。评论,我可以解释更多。

    【讨论】:

    • 糟糕,意思是“没有”,而不是“使用“包含””。用修复编辑了我的帖子。所以我绝对想要一个引擎,并希望它无缝地整合到我的主应用程序中。
    • @C Cole 这更有意义。我会更新答案
    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多