2010-07-02 7 views
11

Encontré una forma de omitir los filtros basados ​​en el formato, como se ve a continuación, pero me pregunto si hay una forma mejor, ya que esto complica las cosas y no muy secoCómo saltear antes los filtros para solicitudes json/xml en rieles

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

Si no hago esto, peticiones JSON fracasan porque el método current_cart, y otros métodos, hacer las cosas sólo destinados a html.

+0

Esto solo funciona en Rails 4+ si cambia ': current_cart' a una llamada directa al método:' current_cart'. La sintaxis del bloque es preferible en algunos casos, así que pensé en señalar cómo usar tu ejemplo correctamente. –

Respuesta

20

Usted puede hacerlo de esta manera:

before_filter :current_cart, :unless => :format_js? 

def format_js? 
    request.format.js? 
end 

Espero que esto ayude.

+1

¡Muy útil! Creo que 'format_json?' Es un mejor nombre para el método. – benastan

+0

Lo cambié a 'format_js' Acepto que el otro nombre no era tan bueno, pero js! = Json. Gracias por la idea! –

Cuestiones relacionadas