2010-02-13 5 views
0

J'ai un groupe de catégories et j'accède à ces catégories par javascript plusieurs fois pendant le cours moyen d'utilisation pour mon application via JSON.Comment renvoyer une chaîne memcached en fonction de respond_to type?

Donc, dans mon contrôle actuellement j'ai un

@categories = Category.all 

respond_to do |format| 
    format.html # index.html.erb 
    format.json 

ainsi que le fichier index.json.erb approprié que les formats ce que je dois aussi loin que JSON.

Maintenant, je veux ajouter des fonctionnalités à ce memcached donc dans le fichier index.json.erb J'ai ajouté

<% cache "JSON_CATEGORIES_ALL" do -%> block around my output 

Ma question est de savoir comment puis-je obtenir mon contrôleur pour appeler cette clé de cache pour répondre à une demande JSON et agir normalement, en tirant de la base de données, sur d'autres appels?

Merci

Répondre

1

Vous pouvez vérifier le format de la demande:

@categories = Category.all unless request.format == "application/json" and fragment_exists?("JSON_CATEGORIES_ALL") 

respond_to do |format| 
    format.html # @categories is available 
    format.json # no database call if your cache fragment already exists 
end 
+0

Ya qui est proche, je l'ai utilisé ... Je me suis dit pourquoi il ne fonctionnait pas voir ci-dessous. –

0

I figured it out ... pour tous ceux qui trébuche sur cette voilà.

@categories = Category.all unless request.format == "application/json" and Rails.cache.exist?("views/JSON_CATEGORIES_ALL") 

AVIS: l'ajout de vues/à la clé de cache! il semble que les rails le préfèrent aux caches faites sur une vue.

agregoire: Merci pour l'

request.format == "application/json" 
Questions connexes