I know how to disable the root element globally, a la Rails 3.1 include_root_in_json or by using ActiveRecord::Base.include_root_in_json = false
, but I only want to do this for a few JSON requests (not globally).
So far, I've been doing it like this:
@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
There are about 5 cases where I have to do this, sometimes with more than one model, and it doesn't feel clean at all. I had tried putting this in around_filter
s, but exceptions were breaking the flow, and that was getting hairy as well.
There must be a better way!