2

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

上記はA way to add before_filter from engine to applicationに投稿されましたが、私の理解では、ヘルパーはビューでしか使用できず、コントローラーでアクセスする必要があるということでした。

4

1 に答える 1

7

以前、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で私の宝石を参照してください。これは本質的に非常に単純であり、いくつかのガイダンスを提供できる場合があります。コメントして、もっと説明できます。

于 2012-06-20T17:02:19.467 に答える