2012-05-27 12 views
23

एक नई रेल में आप config/initializers/wrap_parameters.rb निम्नलिखित लाइनों में पा सकते हैं 3.2 अनुप्रयोग:रेल रैप_परमीटर बनाम include_root_in_json, क्या अंतर है?

ActiveSupport.on_load(:action_controller) do 
    wrap_parameters format: [:json] 
end 

# Disable root element in JSON by default. 
ActiveSupport.on_load(:active_record) do 
    self.include_root_in_json = false 
end 

दूसरा कोड ब्लॉक के लिए मेरे समझ है कि यदि आप json करने के लिए एक वस्तु कनवर्ट करते हैं, ऐसा नहीं होगा रूट नोड (यानी उपयोगकर्ता => {: name => 'जॉन'} शामिल करें, बल्कि यह {{name => 'john'}

पहला wrap_parameters ब्लॉक क्या करता है? यह action_controller पर कार्य करता है .. क्यों?

उत्तर

63

include_root_in_json रेलों में जेसन को तत्काल लपेटना है

wrap_parameters अनुरोध से प्राप्त जेसन को लपेटना है।

आप wrap_parameters है यदि सक्षम हो, और यदि आप रेल के लिए एक पोस्ट आदेश के माध्यम से निम्नलिखित json भेजें:

{"person": {name: 'John Smith'}}:

{name: 'John Smith'}

रेल स्वचालित रूप से JSON यह में प्राप्त लपेटो जाएगा

include_root_in_json, दूसरी ओर, यह है कि जेसन रेल किसी ऑब्जेक्ट से उत्पन्न करता है या to_json कमांड के माध्यम से नहीं।


उदा। Person.to_json। यदि include_root_in_json सक्षम किया गया है, आप प्राप्त करेंगे:

{"person": {name: 'James Brown'}}

अन्यथा, आप बस

{name: 'John Smith'}

+0

धन्यवाद संभोग, बहुत स्पष्ट मिलेगा। – Inc1982

+0

तो यह वही करता है। यह डिफ़ॉल्ट क्यों है? यदि 'मेरी नई ऐप - एपीआई' रेल हो रही है तो बंद होना चाहिए –

संबंधित मुद्दे