8

我正在研究 Rails 引擎,但我的助手有问题。

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

读过你可以在你的文件中添加几行,init.rb但它似乎没有任何效果。

知道使应用程序在引擎中可用的最佳方法是什么吗?

编辑:修复它 - 只需将代码(来自链接)放入engine.rb

4

2 回答 2

10

将此代码放在engine.rb中:

config.to_prepare do
  ApplicationController.helper(MyEngineHelper)
end
于 2012-09-04T05:04:47.327 回答
3

要从我尝试的引擎视图访问主应用程序助手(ApplicationHelper),包括:

app/helpers/your_engine/application_helper.rb

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

它可以工作,但是有一次,当我重新启动开发服务器时,它会抛出 me 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
于 2014-02-15T00:55:27.760 回答