2010-07-02 4 views
11

J'ai trouvé un moyen d'ignorer les filtres basés sur le format, comme on le voit ci-dessous, mais je me demande s'il y a une meilleure solution car cela encombre les choses et isn ' T très sec.Comment passer devant les filtres pour les requêtes json/xml dans les rails

before_filter do |controller| 
    :current_cart unless controller.request.format.js? 
end 

Si je ne le fais pas, les demandes de JSON échouent parce que la méthode de current_cart, et d'autres méthodes, faire des choses que signifiait pour html.

+0

Ceci ne fonctionne que dans Rails 4+ si vous changez ': current_cart' pour un appel direct à la méthode:' current_cart'. La syntaxe de bloc est préférable dans certains cas, donc j'ai pensé que je ferais remarquer comment utiliser votre exemple correctement. –

Répondre

20

Vous pouvez le faire de cette façon:

before_filter :current_cart, :unless => :format_js? 

def format_js? 
    request.format.js? 
end 

Hope this helps.

+1

Vraiment utile! Je pense que 'format_json?' Est un meilleur nom pour la méthode. – benastan

+0

Je l'ai changé pour 'format_js' Je suis d'accord que l'autre nom n'était pas aussi bon mais js! = Json. Merci pour la pensée! –

Questions connexes