Question

Celui-ci m'a déconcerté.

J'ai vue avec un fragment cache:

 - cache :key=>"news" do    
   %h2 News
   - etc

J'ai une balayeuse qui utilise:

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment(:key => "news") 
end

La balayeuse est appelée comme je peux voir « expire_home_cache » dans la sortie de la console.

Mais le fragment est pas mis à jour ...

Toutes les idées?

Était-ce utile?

La solution

Vous pouvez essayer ceci:

   cache("news") do    
     %h2 News
     - etc
   end

et ...

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment("news") 
end

... ou essayer ...

 - cache({:key=>"news"}) do    
   %h2 News
   - etc

Je pense la question peut être que rubis ou des rails est un moment difficile de déterminer ce que la clé est exactement et si la méthode de cache et expire_fragment génèrent deux clés de cache différentes.

Autres conseils

Essayez de remplacer expire_fragment(:key => "news") avec ActionController::Base.new.expire_fragment(:key => "news")

Pas le temps d'expliquer, mais cela a fonctionné pour moi.

La bonne façon de faire est:

cache :news do

  ...
end

Et puis dans votre balayeuse:

expire_fragment :news

Cela ne répond pas directement à votre question, mais avez-vous essayé le plugin timed_fragment_cache comme alternative?

http://github.com/tricycle/timed_fragment_cache/tree/master

Je trouve que cela est une manière beaucoup plus simple d'expirer fragments dans mes projets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top