预构建片段缓存(内部方法)

时间:2015-01-11 22:52:34

标签: ruby-on-rails helpers fragment-caching prebuild

我想预先构建一个需要几秒钟渲染的局部。我见过使用代理通过http预加载缓存的函数,但我希望有一个“内部”解决方案。

这是我的函数,每当myobject更新时都会调用它:

def pre_build_partial myobject
  the_controller = ActionController::Base.new
  the_controller.instance_variable_set '@myobject', myobject

  view_renderer = ActionView::Renderer.new the_controller.lookup_context
  view_renderer.render the_controller.view_context, { partial: 'mypartial', layout: false }
end

它适用于使用基本帮助程序的部分,但我的自定义帮助程序会抛出错误:

undefined method `my_custom_helper_function' for #<#<Class:...>

我想帮助者必须包含在the_controller中,但我找不到办法。感谢您提前提供任何帮助!

1 个答案:

答案 0 :(得分:3)

你可以从源代码中挑选一些想法:) https://github.com/rails/rails/issues/18409