Wiem, jak wyłączyć element główny globalnie, a la Rails 3.1 include_root_in_json lub za pomocą ActiveRecord::Base.include_root_in_json = false
, ale chcę to zrobić tylko dla kilku żądań JSON (nie globalnie).Railsy: Wyłącz root w JSON tylko dla określonych działań kontrolera?
tej pory robiłem to tak:
@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
Istnieje około 5 przypadków, gdzie mam to zrobić, czasami więcej niż jednego modelu, a nie czuć w czystości wszystko. Próbowałem to wstawić w around_filter
s, ale wyjątki zrywały przepływ i to też było owłosione.
Musi istnieć lepszy sposób!
Nie odpowiada to bezpośrednio na twoje pytanie, ale odpowiada na pytanie, które tu przyszedłem: MOŻESZ tłumić root przy poszczególnych połączeniach z 'to_json', np. 'Donut.to_json (root: false)' – Lambart