2010-07-02 11 views
11

Ho trovato un modo per saltare prima dei filtri in base al formato, come visto sotto, ma mi chiedo se c'è un modo migliore poiché questo ingombra le cose e non è t molto ASCIUTTO.Come saltare prima i filtri per le richieste json/xml nei binari

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

Se non faccio questo, le richieste di JSON falliscono perché il metodo current_cart, e altri metodi, fare le cose serve solo per HTML.

+0

Questo funziona solo in Rails 4+ se si cambia ': current_cart' in una chiamata diretta al metodo:' current_cart'. La sintassi del blocco è preferibile in alcuni casi, quindi ho pensato di indicare come utilizzare correttamente il tuo esempio. –

risposta

20

che si possa fare in questo modo:

before_filter :current_cart, :unless => :format_js? 

def format_js? 
    request.format.js? 
end 

Spero che questo aiuti.

+1

Davvero utile! Penso che 'format_json?' Sia un nome migliore per il metodo. – benastan

+0

L'ho cambiato in 'format_js' Sono d'accordo che l'altro nome non era buono ma js! = Json. Grazie del pensiero! –