2011-11-06 177 views
8

我正在使用Rails引擎,并且对助手有问题。Rails引擎中的助手

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

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

任何想法在引擎中提供应用程序的最佳方式是什么?

编辑:修正了它 - 只是把代码(从链接)在engine.rb而不是。

+1

你能提供的一个例子你放在engine.rb中的代码? – westonplatter

回答

10

将这个代码engine.rb:

config.to_prepare do 
    ApplicationController.helper(MyEngineHelper) 
end 
+0

内部类引擎 linjunhalida

+1

后代:这不再是必要的 - 轨道现在自动加载所有帮助程序 – danielpcox

+3

运行轨3.2.12 ...必须添加此访问ApplicationHelper内的方法 – Patm

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 
+1

我必须将Rails 4.2中的.helper行更改为:ApplicationController.helper(:: ApplicationHelper)......这甚至可能适用于您的第一个解决方案。 – Allen