6 Stimmen

Geländer: Deaktivieren Sie Root in JSON für nur bestimmte Controller-Aktionen?

Ich weiß, wie ich das Root-Element global deaktivieren kann, a la Rails 3.1 include_root_in_json oder durch die Verwendung von ActiveRecord::Base.include_root_in_json = false aber ich möchte dies nur für einige wenige JSON-Anfragen tun (nicht global).

Bis jetzt habe ich es so gemacht:

@donuts = Donut.where(:jelly => true)
@coffees = Coffee.all
@breakfast_sandwiches = Sandwich.where(:breakfast => true)

dunkin_donuts_order = {}
dunkin_donuts_order[:donuts] = @donuts
dunkin_donuts_order[:libations] = @coffees
dunkin_donuts_order[:non_donut_food] = @breakfast_sandwiches

Donut.include_root_in_json = false
Coffee.include_root_in_json = false

render :json => dunkin_donuts_order

Donut.include_root_in_json = true
Coffee.include_root_in_json = true

Es gibt etwa 5 Fälle, in denen ich dies tun muss, manchmal mit mehr als einem Modell, und es fühlt sich überhaupt nicht sauber an. Ich hatte versucht, dies in around_filter s, aber die Ausnahmen unterbrachen den Fluss, und auch das wurde brenzlig.

Es muss einen besseren Weg geben!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X