2010-02-25 15 views
26

स्पष्ट हो सकता है, लेकिन फिर भी मुझे बुनियादी ज्ञान की कमी है।रेल: format.js या format.json, या दोनों?

तो नियंत्रकों के अंदर, दोनों का उपयोग किया जा सकता है, या यह हमेशा जावास्क्रिप्ट है, तो दोनों समान हैं?

+0

मेरा मानना ​​है कि दोनों का उपयोग किया जा सकता है क्योंकि वे अलग एमआईएम प्रकार हैं। कोशिश क्यों नहीं करते और देखते हैं? –

उत्तर

23

रेल में 3.1 एकमात्र अंतर जो मैं खोज सकता हूं वह यह है कि अगर फॉर्मेटर जेएस है, तो उत्तर सादे पाठ के रूप में भेजा जाता है। यदि यह जेसन है तो यह जेसन के रूप में एन्कोड किया गया है।

अगर format.json

format.json { 
    render :json => @accounts.map(&:attributes) 
} 

सर्वर भेजने:

data:application/json;base64, 

अगर format.js

format.js { 
    render :json => @accounts.map(&:attributes) 
} 

सर्वर भेजने:

[{"id":33,"email":"[email protected]"}] 
34

json और js प्रतिक्रिया के दो विभिन्न प्रकार के होते हैं और वे रेल

Mime::Type.register "text/javascript", :js, %w(application/javascript application/x-javascript) 
Mime::Type.register "application/json", :json, %w(text/x-json application/jsonrequest) 

यहां तक ​​कि अगर Json जावास्क्रिप्ट का एक सबसेट माना जा सकता है में प्रकारों के रूप में परिभाषित कर रहे हैं, सभी जावास्क्रिप्ट प्रतिक्रियाओं वास्तव में Json प्रतिक्रियाएं हैं।

आप उसी कार्रवाई में जेसन और जेएस के साथ जवाब देना चाहेंगे।

उदाहरण के लिए, आपके पास एक ऐसी क्रिया हो सकती है जो जेसन से एपीआई कॉल और जावास्क्रिप्ट (शायद आरजेएस का उपयोग करके) को आंतरिक अजाक्स कॉल में प्रतिसाद दे।

+3

सही उत्तर – Donato

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