2012-10-23 32 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