キャッシングは私のビューコードの中で最もロジックを集中的に使用する部分なので、デコレータ内からフラグメントキャッシングを実行したいのですが、実行できません。
デコレータからこれを行うと:
def cached_name
h.cache do
"a name here"
end
end
私はこれを手に入れます:
あなたはそれを予期していなかったときにnilオブジェクトを持っています!配列のインスタンスを期待していたかもしれません。nil.lengthの評価中にエラーが発生しました
コントローラ内からデコレータをインスタンス化します
@presenter = SomePresenter::new
ビューにHAMLを使用しています
デコレータの内部からキャッシュを成功させるにはどうすればよいので、私のビューはこのようなことを行うことができます
= @decorator.cached_logic_heavy_stuff
更新:問題を示すgitリポジトリを作成しました:https ://github.com/houen/presenter_caching
更新:これはおそらく機能します-リポジトリを参照してください
include Haml::Helpers
def another_way_to_try
self.init_haml_helpers
buffer = haml_buffer.buffer
h.with_output_buffer(buffer) do
h.cache do
h.concat "i should still not be empty"
end
end
end