我正在研究 Rails 引擎,但我的助手有问题。
显然这是一个已知的“问题”,但那里没有很多解决方案。问题是我有一个我想全局访问的 AuthenticationHelper - 但它不起作用。
我读过你可以在你的文件中添加几行,init.rb
但它似乎没有任何效果。
知道使应用程序在引擎中可用的最佳方法是什么吗?
编辑:修复它 - 只需将代码(来自链接)放入engine.rb
。
我正在研究 Rails 引擎,但我的助手有问题。
显然这是一个已知的“问题”,但那里没有很多解决方案。问题是我有一个我想全局访问的 AuthenticationHelper - 但它不起作用。
我读过你可以在你的文件中添加几行,init.rb
但它似乎没有任何效果。
知道使应用程序在引擎中可用的最佳方法是什么吗?
编辑:修复它 - 只需将代码(来自链接)放入engine.rb
。
将此代码放在engine.rb中:
config.to_prepare do
ApplicationController.helper(MyEngineHelper)
end
要从我尝试的引擎视图访问主应用程序助手(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