यह रूबी कोड का एक ब्लॉक है जो रेल हेल्पर विधि का लाभ उठाता है। यदि आप अभी तक ब्लॉकों से परिचित नहीं हैं, तो आप उन्हें रूबी में बहुत कुछ देखेंगे।
respond_to
रेल हेल्पर विधि है जो नियंत्रक वर्ग (या बल्कि, इसके सुपर क्लास) से जुड़ी है। यह उस प्रतिक्रिया को संदर्भित कर रहा है जिसे व्यू में भेजा जाएगा (जो ब्राउज़र में जा रहा है)।
आपके उदाहरण में ब्लॉक डेटा को फ़ॉर्मेट कर रहा है - ब्लॉक में एक 'फॉर्मेट' पैरामाटर में पास करके - जब भी कोई ब्राउज़र html या json डेटा के लिए अनुरोध करता है, तो उसे कंट्रोलर से दृश्य में भेजा जाएगा।
यदि आप अपने स्थानीय मशीन पर हैं और आपके पास अपना पोस्ट मचान सेट है, तो आप जा सकते हैं http://localhost:3000/posts
और आप HTML प्रारूप में अपनी सभी पोस्ट देखेंगे। लेकिन, यदि आप इसमें टाइप करते हैं: http://localhost:3000/posts.json
तो आप सर्वर से भेजे गए एक json ऑब्जेक्ट में अपनी सभी पोस्ट देखेंगे।
यह जावास्क्रिप्ट भारी अनुप्रयोगों को बनाने के लिए बहुत आसान है जो सर्वर से आगे और पीछे से पास करने की आवश्यकता है। यदि आप चाहते हैं, तो आप आसानी से अपने रेल के बैक-एंड पर एक 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
कक्षा के शीर्ष पर रखकर , आप उन सभी स्वरूपों को घोषित कर सकते हैं जिन्हें आप अपने नियंत्रक को अपने विचारों को भेजना चाहते हैं।
फिर, कंट्रोलर मेथड में, आपको केवल करना होगा response_with (@whatever_object_you_have)
यह सिर्फ आपके कोड को ऑटो-जेनरेट करने वाले रेल की तुलना में थोड़ा अधिक सरल बनाता है।
अगर आप इस के अंदरूनी कामकाज के बारे में जानना चाहते हैं ...
मैं जो समझ रहा हूं, उससे यह पता चलता है कि वास्तविक स्वरूप क्या होने जा रहा है, यह निर्धारित करने के लिए रेल वस्तुओं का अंतःसंबंध करता है। 'प्रारूप' चर मूल्य इस आत्मनिरीक्षण पर आधारित है। थोड़ी जानकारी के साथ रेल पूरी तरह से कर सकती है। आपको आश्चर्य होगा कि एक सरल @ पोस्ट या कितनी दूर: पोस्ट जाएगी।
उदाहरण के लिए, अगर मेरे पास एक _user.html.erb आंशिक फ़ाइल है जो इस तरह दिखती है:
_user.html.erb
<li>
<%= link_to user.name, user %>
</li>
फिर, अकेले मेरे अनुक्रमणिका दृश्य में रेल को पता चल जाएगा कि उसे 'उपयोगकर्ताओं' की सभी वस्तुओं के माध्यम से आंशिक और पुनरावृति खोजने की आवश्यकता है:
index.html.erb
<ul class="users">
<%= render @users %>
</ul>
रेल को बताएंगे कि उसे 'उपयोगकर्ता' की सभी वस्तुओं के माध्यम से 'उपयोगकर्ता' को आंशिक और पुनरावृति खोजने की आवश्यकता है:
आपको यह ब्लॉग पोस्ट उपयोगी लग सकता है: http://archives.ryandaigle.com/articles/2009/8/6/what-s-new-in-edge-rails-cleaner-restful-controllers-w-respond-with
आप स्रोत का उपयोग भी कर सकते हैं: https://github.com/rails/rails