यह रूबी कोड का एक ब्लॉक है जो रेल सहायक सहायक विधि का लाभ उठाता है। यदि आप अभी तक ब्लॉक से परिचित नहीं हैं, तो आप उन्हें रूबी में बहुत कुछ देखेंगे।
respond_to
एक रेल सहायक सहायक विधि है जो नियंत्रक वर्ग (या बल्कि, इसकी सुपर क्लास) से जुड़ी है। यह उस प्रतिक्रिया का संदर्भ दे रहा है जो दृश्य को भेजा जाएगा (जो ब्राउज़र पर जा रहा है)।
आपके उदाहरण में ब्लॉक डेटा स्वरूपण कर रहा है - ब्लॉक में 'प्रारूप' पैरामीटर में गुजरकर - नियंत्रक से देखने के लिए जब भी ब्राउज़र एचटीएमएल या जेसन डेटा के लिए अनुरोध करता है।
यदि आप अपनी स्थानीय मशीन पर हैं और आपके पास पोस्ट पोस्ट मचान है, तो आप http://localhost:3000/posts
पर जा सकते हैं और आप अपनी सभी पोस्ट HTML प्रारूप में देखेंगे। लेकिन, यदि आप इसमें टाइप करते हैं: http://localhost:3000/posts.json
, तो आप सर्वर से भेजे गए एक जेसन ऑब्जेक्ट में अपनी सभी पोस्ट देखेंगे।
यह जावास्क्रिप्ट भारी अनुप्रयोग बनाने के लिए बहुत आसान है जिसे सर्वर से पीछे और पीछे जेसन पास करने की आवश्यकता है। यदि आप चाहते थे, तो आप आसानी से अपने रेल बैक-एंड पर एक जेसन एपीआई बना सकते हैं, और केवल एक दृश्य को पास कर सकते हैं - जैसे कि आपके पोस्ट कंट्रोलर के इंडेक्स व्यू। फिर आप डेटा को कुशल बनाने और अपना इंटरफ़ेस बनाने के लिए Jquery या Backbone (या दोनों) जैसे जावास्क्रिप्ट लाइब्रेरी का उपयोग कर सकते हैं। इन्हें एसिंक्रोनस यूआई कहा जाता है और वे वास्तव में लोकप्रिय हो रहे हैं (जीमेल एक है)। वे बहुत तेज़ हैं और अंत उपयोगकर्ता को वेब पर अधिक डेस्कटॉप जैसा अनुभव देते हैं। बेशक, यह आपके डेटा स्वरूपण का सिर्फ एक फायदा है।
इस लेखन की रेल 3 तरीका यह होगा:
class PostsController < ApplicationController
# GET /posts
# GET /posts.xml
respond_to :html, :xml, :json
def index
@posts = Post.all
respond_with(@posts)
end
#
# All your other REST methods
#
end
वर्ग के शीर्ष पर respond_to :html, :xml, :json
डाल करके, आप सभी स्वरूपों है कि आप अपने नियंत्रक अपने विचार करने के लिए भेजना चाहते घोषणा कर सकते हैं।
फिर, नियंत्रक विधि में, तुम सब करने की ज़रूरत respond_with (@whatever_object_you_have)
यह सिर्फ अपने कोड क्या रेल ऑटो उत्पन्न करता है की तुलना में थोड़ा अधिक सरल करता है।
आप इस के आंतरिक कामकाज के बारे में जानना चाहते हैं ...
मैं क्या समझ से, रेल निर्धारित करने के लिए क्या वास्तविक स्वरूप होने जा रहा है वस्तुओं introspects। 'स्वरूप' चर मूल्य इस आत्मनिरीक्षण पर आधारित है। रेल कुछ जानकारी के साथ पूरी तरह से कर सकते हैं। आप आश्चर्यचकित होंगे कि एक साधारण @ पोस्ट या कितना पोस्ट होगा।
उदाहरण के लिए, अगर मैं एक _user.html.erb आंशिक फ़ाइल है कि इस तरह देखा था:
_user.html।ERB
<li>
<%= link_to user.name, user %>
</li>
फिर, मेरी सूचकांक ध्यान में रखते हुए इस अकेले हैं रेल पता है कि यह 'उन' आंशिक खोजने के लिए और 'उन' वस्तुओं के सभी के माध्यम से पुनरावृति करने की जरूरत:
index.html .erb
<ul class="users">
<%= render @users %>
</ul>
दिया जाएगा रेल पता है कि यह 'उपयोगकर्ता' आंशिक खोजने के लिए और 'उन' वस्तुओं के सभी के माध्यम से पुनरावृति करने की जरूरत:
तुम भी स्रोत का अवलोकन कर सकते हैं:: 1,363,210
आप इस ब्लॉग पोस्ट उपयोगी लग सकती https://github.com/rails/rails
यह अच्छा होगा अगर मैं ActionController :: MimeResponds :: ClassMethods :: respond_to के लिए प्रलेखन से लिंक कर सकता हूं लेकिन api.rubyonrails.org सीधे हाइपरलिंक्स की तरह प्रतीत नहीं होता है ... – Cole
answer_to कॉल का अंत लेता है (उदाहरण के लिए blah.html, blah.json, आदि) और निर्दिष्ट दृश्य से मेल खाता है। आवेदन के आधार पर अन्य प्रतिक्रियाएं एक्सएमएल, सीएसवी और कई अन्य हो सकती हैं। – ScottJShea
यह "निर्दिष्ट दृश्य से कैसे मेल खाता है?" – Cole