Sé cómo desactivar el elemento raíz globalmente, a la Rails 3.1 include_root_in_json o usando ActiveRecord::Base.include_root_in_json = false
, pero solo quiero hacer esto para unas pocas solicitudes JSON (no globalmente).Rieles: ¿Deshabilita la raíz en JSON solo para acciones específicas del controlador?
Hasta ahora, he estado haciendo de esta manera:
@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
Hay alrededor de 5 casos en los que tengo que hacer esto, a veces con más de un modelo, y no se siente limpio en todas. Había intentado poner esto en around_filter
s, pero las excepciones estaban rompiendo el flujo, y que se estaba poniendo peludo también.
¡Debe haber una manera mejor!
Esto no responde directamente a su pregunta, pero responde la que busqué aquí: PUEDE suprimir la raíz en llamadas individuales a 'to_json', p. Ej. 'Donut.to_json (root: falso)' – Lambart