2010-07-02 5 views
11

überspringt Ich fand einen Weg, um vor Filtern zu springen, die auf dem Format basieren, wie unten gesehen, aber ich frage mich, ob es einen besseren Weg gibt, weil dies Sachen verstopft und isn ' t sehr trocken.Wie man vor Filtern für json/xml Anträge in Schienen

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

Wenn ich dies nicht tun, scheitern json Anfragen, weil die current_cart Methode und andere Methoden, nur Dinge tun, für html gemeint.

+0

Dies funktioniert nur in Rails 4+, wenn Sie ': current_cart' in einen direkten Aufruf der Methode' current_cart' ändern. Die Block-Syntax ist in einigen Fällen vorzuziehen, also dachte ich, ich würde Ihnen zeigen, wie Sie Ihr Beispiel richtig verwenden. –

Antwort

20

Man könnte es auf diese Weise tun:

before_filter :current_cart, :unless => :format_js? 

def format_js? 
    request.format.js? 
end 

Hoffnung, das hilft.

+1

Wirklich hilfreich! Ich denke 'format_json?' Ist ein besserer Name für die Methode. – benastan

+0

Ich habe es in 'format_js' geändert. Ich stimme zu, dass der andere Name nicht so gut war, aber js! = Json. Danke für den Gedanken! –

Verwandte Themen