2010-07-02 10 views
11

Znalazłem sposób na przeskoczenie przed filtrami opartymi na formacie, jak widać poniżej, ale zastanawiam się, czy jest lepszy sposób, ponieważ to się zacina i nie jest " t bardzo SUCHY.Jak pominąć filtry dla żądań json/xml w szynach

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

Jeśli tego nie zrobi, żądania json nie dlatego metody current_cart i innymi metodami, robić rzeczy tylko przeznaczone dla html.

+0

Działa to tylko w Railsach 4+, jeśli zmienisz ': current_cart' na bezpośrednie wywołanie metody:' current_cart'. Składnia blokowa jest w niektórych przypadkach lepsza, więc pomyślałem, że wskazałbym, jak poprawnie posłużyć się przykładem. –

Odpowiedz

20

Można zrobić to w ten sposób:

before_filter :current_cart, :unless => :format_js? 

def format_js? 
    request.format.js? 
end 

nadzieję, że to pomaga.

+1

Naprawdę pomocna! Myślę, że 'format_json?' Jest lepszą nazwą dla tej metody. – benastan

+0

Zmieniłem go na 'format_js' Zgadzam się, że druga nazwa nie była tak dobra, ale js! = Json. Dzięki za tę myśl! –