我正在使用Rails引擎,并且对助手有问题。Rails引擎中的助手
显然这是一个已知的“问题”,但没有太多的解决方案。问题是我有一个我想全局访问的AuthenticationHelper - 但它不起作用。
我已经read that you could add a few lines to your init.rb
但它似乎没有任何效果。
任何想法在引擎中提供应用程序的最佳方式是什么?
编辑:修正了它 - 只是把代码(从链接)在engine.rb
而不是。
我正在使用Rails引擎,并且对助手有问题。Rails引擎中的助手
显然这是一个已知的“问题”,但没有太多的解决方案。问题是我有一个我想全局访问的AuthenticationHelper - 但它不起作用。
我已经read that you could add a few lines to your init.rb
但它似乎没有任何效果。
任何想法在引擎中提供应用程序的最佳方式是什么?
编辑:修正了它 - 只是把代码(从链接)在engine.rb
而不是。
将这个代码engine.rb:
config.to_prepare do
ApplicationController.helper(MyEngineHelper)
end
内部类引擎
后代:这不再是必要的 - 轨道现在自动加载所有帮助程序 – danielpcox
运行轨3.2.12 ...必须添加此访问ApplicationHelper内的方法 – Patm
从发动机的观点我试图访问主要的应用程序助手(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
我必须将Rails 4.2中的.helper行更改为:ApplicationController.helper(:: ApplicationHelper)......这甚至可能适用于您的第一个解决方案。 – Allen
你能提供的一个例子你放在engine.rb中的代码? – westonplatter