रेल में क्या प्रतिपादन है?
रेंडरिंग आपके रूबी ऑन रेल्स एप्लिकेशन का अंतिम लक्ष्य है। आप एक दृश्य प्रस्तुत करते हैं, आमतौर पर .html.erb
फ़ाइलें, जिनमें एचएमटीएल और रूबी कोड का मिश्रण होता है।
एक दृश्य वह है जो उपयोगकर्ता देखता है ।
यह आपके रेल ऐप को करने वाले सभी कार्यों का नतीजा है। उपयोगकर्ता के अनुरोध को पूरा करने के लिए व्यूज तर्क, डेटा और व्यू टेम्प्लेट को मिलाते हैं।
यहां तक कि एक JSON प्रतिक्रिया लौटाना भी एक दृश्य माना जा सकता है।
इसीलिए वह सब कुछ सीख रहे हैं जो आप कर सकते हैं रेल में रेंडरिंग सिस्टम के बारे में महत्वपूर्ण है अगर आप नहीं चाहते कि आपका सारा काम बर्बाद हो जाए।
रेल में प्रतिपादन कुछ आश्चर्यजनक व्यवहार उत्पन्न कर सकता है। तो जितना अधिक आप बेहतर जानते हैं।
आइए बुनियादी बातों से शुरू करें!
व्यू रेंडरिंग की मूल बातें
डिफ़ॉल्ट रूप से, आपको कुछ भी प्रस्तुत करने के लिए रेल को बताने की ज़रूरत नहीं है और जब तक बाकी सब कुछ सही तरीके से सेट हो जाता है तब तक विचार तब भी काम करेंगे।
यह "कॉन्फ़िगरेशन पर कन्वेंशन" का हिस्सा है।
यह कैसे काम करता है?
खैर, रेल ऐसी धारणाएँ बनाती हैं जिनसे आप अनजान हो सकते हैं।
यह आपके काम को बचाता है।
लेकिन अगर आप नहीं जानते कि क्या हो रहा है तो यह जादू जैसा लग सकता है।
यही वह जगह है जहां आप मुश्किल में पड़ सकते हैं!
इस विशेष मामले में, रेल की धारणा यह है कि आप उसी नाम के साथ एक टेम्पलेट प्रस्तुत करना चाहते हैं जो अनुरोध को संभालने वाले नियंत्रक क्रिया के रूप में है।
तो अगर आप BooksController#index
. को कॉल करते हैं ... रेल्स books/index.erb
. प्रदान करता है ।
अब :
आप इस प्रतिपादन पर अधिक नियंत्रण प्राप्त कर सकते हैं।
यह आपको डिफ़ॉल्ट से भिन्न दृश्य प्रस्तुत करने की अनुमति देता है।
यहां बताया गया है :
class BooksController < ApplicationController def index render :listing end end
यह books/listing.erb
. प्रदान करता है (या .haml
यदि आप HAML दृश्यों का उपयोग कर रहे हैं)।
आप प्रतीक के बजाय एक स्ट्रिंग का उपयोग कर सकते हैं।
इसे पसंद करें :
render 'shared/buttons'
रेल shared/buttons.erb
render प्रस्तुत करेंगे ।
एक बात जो आपको जानना आवश्यक है
किसी अन्य क्रिया से संबद्ध दृश्य को प्रस्तुत करने से वह क्रिया नहीं चलेगी।
दूसरे शब्दों में, कॉल करना render :index
अंदर create
index
नहीं चलेगा विधि।
यह महत्वपूर्ण क्यों है?
क्योंकि उस दृश्य के लिए आवृत्ति चर सेट नहीं किए जाएंगे!
आपको उन्हें स्वयं सेट करने की आवश्यकता है।
उदाहरण :
def index @users = User.all end # Missing `@users` here will result in an error or an empty index view # You can use `redirect_to` instead, in that case `index` will run def create render :index end
इसके अलावा प्रतिपादन के लिए और भी बहुत कुछ है।
चलो चलते रहें!
विभिन्न प्रकार के प्रतिपादन
टेम्पलेट प्रस्तुत करने के अलावा आपके पास अन्य विकल्प हैं।
आप कर सकते हैं :
- एचटीएमएल स्ट्रिंग रेंडर करें
- सादा टेक्स्ट स्ट्रिंग रेंडर करें
- JSON प्रस्तुत करें
यदि आपके पास त्रुटियों को संभालने के लिए उचित टेम्पलेट नहीं है, तो किसी प्रकार का त्रुटि संदेश दिखाने के लिए विकास के दौरान एक स्ट्रिंग को प्रस्तुत करना सहायक हो सकता है।
या यदि आप किसी विशेष नियंत्रक कार्रवाई के लिए अभी तक अपना विचार लिखने के लिए तैयार नहीं हैं।
यहां एक उदाहरण दिया गया है :
if @user render :show else render plain: "User not found." end
JSON को सीधे रेंडर करना एक साधारण API बनाने के लिए इस्तेमाल किया जा सकता है, यह सबसे अच्छा तरीका नहीं है लेकिन यह आपको आरंभ करने में मदद कर सकता है।
उदाहरण :
render json: @user
मैंने रेंडर एचटीएमएल का उपयोग नहीं किया है, लेकिन अगर आपके पास इसका अच्छा उपयोग है तो मुझे बताएं!
आंशिक कैसे प्रस्तुत करें
रेंडरिंग नियंत्रकों से परे है।
आप दृश्यों में दृश्य प्रस्तुत . भी कर सकते हैं ।
हम इसे आंशिक कहते हैं।
आप ऐसा क्यों करना चाहेंगे?
क्लीनर कोड और कोड का पुन:उपयोग।
यदि आप 3 अलग-अलग पृष्ठों पर एक ही फ़ॉर्म का उपयोग कर रहे हैं, तो उसे आंशिक रूप से निकालना एक अच्छा विचार हो सकता है ।
अब जब आप परिवर्तन करना चाहते हैं तो आपको इसे केवल एक ही स्थान पर करना होगा।
यहां एक उदाहरण दिया गया है :
<%= render :form %>
इसके लिए काम करने के लिए आपको अपनी दृश्य फ़ाइल को अंडरस्कोर से शुरू करना होगा, जैसे _form.erb
, लेकिन जब आप render
. को कॉल करते हैं आपको अंडरस्कोर की आवश्यकता नहीं है।
आप आवृत्ति चर तक पहुंच सकेंगे आंशिक से...
लेकिन स्थानीय चर के बारे में क्या?
आप यह कर सकते हैं :
<%= render :form, message: "Apples Are Good" %>
यह आपको message
. तक पहुंच प्रदान करता है आपके आंशिक में स्थानीय चर के रूप में।
अगला :
आप सीखेंगे कि कैसे आप केवल एक render
. के साथ अनेक चीज़ों को रेंडर कर सकते हैं कॉल करें!
संग्रह कैसे प्रस्तुत करें
पार्टियल आपको बिना लूप के संग्रह प्रस्तुत करने में मदद करते हैं।
मान लें कि आप @books
rendering रेंडर कर रहे हैं ।
आप यह कर सकते हैं :
<%= render @books %>
यदि आपके पास _book.erb
है तो यह काम करेगा आंशिक और उपयोग book
उस टेम्पलेट के अंदर आपके चर के रूप में।
उदाहरण :
# app/views/books/_book.erb <%= image_tag(book.cover) %><%= book.title %>
<%= book.author %> <%= link_to "Read Book", book %>
यदि आपको वर्तमान पुस्तक संख्या (अपनी सीएसएस कक्षाओं के लिए) की आवश्यकता है तो आप book_counter
. का उपयोग कर सकते हैं ।
जहां book_
आपके मॉडल का नाम है।
मुझे लगता है कि संग्रह प्रतिपादन मेरी पसंदीदा रेल सुविधाओं में से एक है!
रेल लेआउट को समझना
जब आप एक नया रेल ऐप बनाते हैं तो यह दृश्य फ़ोल्डर के अंतर्गत "लेआउट" फ़ोल्डर के साथ आता है।
वहां आपको application.html.erb
मिलेगा फ़ाइल।
यह डिफ़ॉल्ट लेआउट है!
लेआउट क्या है?
एक लेआउट आपको अपनी साइट को एक सुसंगत रूप देने देता है।
यह :
- मेनू
- पाद लेख
- सीएसएस और जावास्क्रिप्ट फ़ाइलें लोड हो रही हैं...
अधिकांश समय डिफ़ॉल्ट लेआउट ठीक रहता है।
लेकिन क्या होगा यदि आप किसी विशेष पृष्ठ के लिए एक अलग लेआउट चाहते हैं?
आप layout
. का उपयोग कर सकते हैं विकल्प।
उदाहरण :
render :index, layout: 'admin'
आप लेआउट को अक्षम कर सकते हैं :
render :index, layout: false
और आप लेआउट को नियंत्रक स्तर पर सेट कर सकते हैं।
इसे पसंद करें :
class AdminsController < ApplicationController layout 'admin' end
रेंडरिंग से कोई क्रिया समाप्त नहीं होती
भ्रम का एक सामान्य बिंदु यह सोच रहा है कि नियंत्रक कार्रवाई के अंदर प्रतिपादन (और पुनर्निर्देशन) इसके बाद किसी भी कोड को चलाना बंद कर देगा।
यदि आप render
. पर कॉल करते हैं तो आप इसके संपर्क में आ सकते हैं कई बार।
उदाहरण :
def create if yellow_fruit? render :bananas end render :apples end
इसके परिणामस्वरूप त्रुटि होगी क्योंकि render :apples
हमेशा चलता है और आप एक ही नियंत्रक क्रिया में दो बार रेंडर नहीं कर सकते।
यह रहा समाधान :
def create if yellow_fruit? render :bananas else render :apples end end
एक अन्य विकल्प return
. का उपयोग करना हो सकता है render
. के बाद कीवर्ड , लेकिन स्पष्टता के लिए, मध्य-विधि return
से बचना सबसे अच्छा है जब भी संभव हो बयान।
सारांश
आपने रूबी ऑन रेल्स में रेंडरिंग के सभी महत्वपूर्ण विषयों के बारे में जान लिया है।
रेंडरिंग आपको अपने एप्लिकेशन के उपयोगकर्ताओं को सामग्री वापस करने की अनुमति देता है और यह आपके नियंत्रक कार्यों के अंदर अंतिम चरणों में से एक है। रेंडरिंग को समझने से आपको बेहतर रेल एप्लिकेशन लिखने में मदद मिलती है।
अब आपकी बारी है, अपना संपादक खोलें और अपने कोडिंग कौशल का अभ्यास करें।
पढ़ने के लिए धन्यवाद!