2012-10-23 34 views
7

实施某些帮助器方法时,有时我想将某些计算结果存储在可从辅助方法访问的某处作为缓存。在Rails帮助器方法中缓存评估结果

如果我将它存储到实例变量,它会污染实例,所以它看起来不明智这样做。

任何存储此类值的好地方? 或者在助手中做这么重的计算是一个坏主意?

回答

12

有时我使用Rails缓存来存储这种类型的值。代码是这样的,

def helper_method 
    Rails.cache.fetch('helper_value') do 
    # calculate the value if it does not exist 
    ... 
    end 
end 
+1

谢谢。我认为缓存的使用并不是我所期望的,但从帮手的角度来看,这是解决问题的自然方法。谢谢。 – shigeya

+0

只是一个提示:'config.action_controller.perform_caching = false'不会禁用Rails.cache.fetch,只有普通的ActionView'cache'助手。请参阅:http://stackoverflow.com/a/43991463/1290457 – sandre89