Rails引擎中的助手

时间:2011-11-06 15:20:40

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

我正在使用rails引擎,我的助手有问题。

显然这是一个已知的问题"但那里没有很多解决方案。问题是我有一个我想全局访问的AuthenticationHelper - 但是它没有用。

read that you could add a few lines to your init.rb但它似乎没有任何效果。

知道在引擎中提供应用程序的最佳方法是什么?

编辑:修正了 - 只需将代码(来自链接)放在engine.rb中。

2 个答案:

答案 0 :(得分:10)

将此代码放入engine.rb:

config.to_prepare do
  ApplicationController.helper(MyEngineHelper)
end

答案 1 :(得分:2)

要从引擎的视图中访问主应用程序帮助程序(ApplicationHelper),我尝试将其包括在内:

应用/助手/ your_engine / application_helper.rb

module YourEngine
  module ApplicationHelper
    include ActionView::Helpers::ApplicationHelper
  end
end

它有效,但有一次,当我重新启动dev服务器时,它会抛出uninitialized constant ActionView::Helpers::ApplicationHelper,但我无法重现此异常。

修改

删除了这个include并制作了这个:

lib / my_engine / engine.rb (它在引擎内)

module MyEngine
  class Engine < ::Rails::Engine
    isolate_namespace MyEngine
    config.to_prepare do
      ApplicationController.helper(ActionView::Helpers::ApplicationHelper)
    end
  end
end