2015-11-03 69 views
0

我在我的rails 4應用程序中使用片段緩存,我試圖過期一個尚未緩存的片段。這就是爲什麼我收到一個錯誤說:expire_fragment緩存在rails 4中

"undefined method `expire_fragment' for #<ItinerarySweeper:0xb5a3510 @controller=nil>" 

這是我的sweerp.rb文件:

class ItinerarySweeper < ActionController::Caching::Sweeper 
    observe Itinerary 

    def after_update(itinerary) 
    expire_cache(itinerary) 
    end 

    def after_destroy(itinerary) 
    expire_cache(itinerary) 
    end 

    def expire_cache(itinerary) 
    expire_fragment "itinerary_percentage_#{itinerary.id}" 
    expire_fragment "city_timeline_#{itinerary.id}" 
    end 
end 

這是我的控制器

class ItinerariesController < ApplicationController 
    cache_sweeper :itinerary_sweeper, :only => [:update, :destroy] 
    ...... 
end 

我能做些什麼來解決這個問題?

+0

可以,你應該一些代碼,拋出這個錯誤? – matanco

回答

0

嘗試改變這一點:

def expire_cache(itinerary) 
    expire_fragment "itinerary_percentage_#{itinerary.id}" 
    expire_fragment "city_timeline_#{itinerary.id}" 
end 

到這一點:

def expire_cache(itinerary) 
    ActionController::Base.new.expire_fragment("itinerary_percentage_#{itinerary.id}", options = nil) 
    ActionController::Base.new.expire_fragment("city_timeline_#{itinerary.id}", options = nil) 
end 
+0

謝謝你的工作! –