expire_fragment缓存在rails 4中

问题描述:

我在我的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

尝试改变这一点:

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

谢谢你的工作! –