2012-04-04 32 views
0

如何防止異常緩存?我有這樣的動作:防止緩存在Ruby on Rails上的異常

caches_page :index 
... 
def index 
    if params[:city] 
    city = City.find(params[:city]) 
    @shows = city.shows 
    else 
    @shows = Show.all 
    end 
... 

如果找到ActionRecord :: RecordNotFound沒有墜毀緩存 - 這是確定。但我不想在我的日誌文件中出現這個異常。但如果我:

begin 
    city = City.find(params[:city]) 
    rescue ActiveRecord::RecordNotFound 
    render :nothing => true 
    return 
    end 

空白頁面緩存!

我想在這種情況下做什麼?

回答

0

嘗試:

caches_page :index, :if => :city_exists? 

private 

def city_exists 
    city = City.find(params[:city]) 
    !city.nil? ? true : false 
end 

而且我認爲你可以使用動作緩存片段緩存

查看關於Extending Caching的詳細信息。

+0

我緩存json頁面顯示城市,我認爲頁面緩存是最好的選擇(也許不是 - 我剛開始學習rails)。但你的解決方案需要一個額外的數據庫請求城市(我需要在我的控制器中) - 我有沒有其他選擇... – Donotello 2012-04-04 06:54:48

+1

希望如此。建議使用片段緩存。看看http://broadcastingadam.com/2011/05/advanced_caching_in_rails – Vik 2012-04-04 07:06:30