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!