मुझे पता है कि वैश्विक स्तर पर रूट तत्व को कैसे अक्षम किया जाए, एक ला Rails 3.1 include_root_in_json या ActiveRecord::Base.include_root_in_json = false
का उपयोग करके, लेकिन मैं केवल कुछ JSON अनुरोधों (वैश्विक स्तर पर नहीं) के लिए ऐसा करना चाहता हूं।रेल: केवल विशिष्ट नियंत्रक कार्यों के लिए JSON में रूट अक्षम करें?
अब तक, मैं इसे इस तरह कर रहा हूँ:
@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
के बारे में 5 मामलों में जहां मैं एक से अधिक मॉडल के साथ कभी कभी यह करने के लिए, हो रहे हैं, और यह साफ महसूस नहीं करता है सब। मैंने इसे around_filter
एस में डालने की कोशिश की थी, लेकिन अपवाद प्रवाह को तोड़ रहे थे, और वह बालों को भी मिल रहा था।
एक बेहतर तरीका होना चाहिए!
यह सीधे आपके प्रश्न का उत्तर नहीं देता है, लेकिन यह उस व्यक्ति का उत्तर देता है जो मैं यहां देख रहा था: आप व्यक्तिगत कॉल पर रूट को 'to_json'' पर दबा सकते हैं, उदा। 'Donut.to_json (रूट: झूठा)' – Lambart