2015-01-11 7 views
5

レンダリングに数秒かかる部分をあらかじめビルドしたいと考えています。私は、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に含まれなければならないと思うが、私はそうする方法を見つけることができない。事前に助けてくれてありがとう!

+0

はあなたが私を見ることができますが、上のそのコードを入れたファイルからいくつかのアイデアを選ぶだろうか? –

+0

すでにすべてがセットアップされているので、おそらく 'ApplicationController.new'にしたいでしょうか? – phoet

+0

Phoetの提案はやや優雅です。最も軽い解決策ではありません(あなたが必要とするヘルパーだけを含むのが理想です)が、それがうまくいくならあなたは正しい方向に動いています。アップデートをお願いします。 – Ecnalyr

答えて

関連する問題