फ्लैश संदेश क्या होते हैं?
एक फ्लैश संदेश आपके रेल एप्लिकेशन के उपयोगकर्ताओं के साथ सूचनाओं को संप्रेषित करने का एक तरीका है ताकि वे जान सकें कि उनके कार्यों के परिणामस्वरूप क्या होता है।
उदाहरण संदेश :
- “पासवर्ड सही ढंग से बदला गया” (पुष्टिकरण)
- “उपयोगकर्ता नहीं मिला” (त्रुटि)
आप इन फ्लैश संदेशों को अपने नियंत्रकों में सेट करते हैं, फिर आप उन्हें अपने विचारों में प्रस्तुत करते हैं। तब आपके उपयोगकर्ता तदनुसार कार्य कर सकते हैं।
आइए जानें कि यह कैसे काम करता है!
फ्लैश संदेशों का उपयोग कैसे करें
आप flash
. का उपयोग करके इन अधिसूचना संदेशों के साथ काम कर सकते हैं सहायक विधि।
यह काफी हद तक रूबी हैश की तरह व्यवहार करता है।
फ्लैश ऑब्जेक्ट में keys
. जैसी विधियां हैं , any?
या each
और आप किसी विशेष संदेश को []
. के साथ एक्सेस कर सकते हैं ।
आप किस प्रकार के फ़्लैश संदेश सेट कर सकते हैं?
डिफ़ॉल्ट रूप से आपके पास . है :
- सूचना
- अलर्ट
यहां इसका उपयोग करने का एक उदाहरण दिया गया है :
flash.alert = "User not found."
या यदि आप चाहें तो :
flash[:alert] = "User not found."
(केवल एक शैली का अंतर।)
आप इस कोड का उपयोग अपने नियंत्रक क्रियाओं के अंदर कर सकते हैं, जैसे index
, create
, new
, आदि.
एक और तरीका यह है :
redirect_to :books_path, notice: "Book not found"
यह आपको एक चरण में रीडायरेक्ट करने और फ़्लैश संदेश बनाने की अनुमति देता है।
बढ़िया!
अलर्ट बनाम नोटिस
जहां तक मैं समझता हूं, यदि आप alert
का उपयोग करते हैं तो यह वास्तव में कोई मायने नहीं रखता है या notice
।
जो आपकी स्थिति के लिए अधिक स्वाभाविक लगता है उसका प्रयोग करें।
मुझे alert
के बारे में सोचना अच्छा लगता है एक त्रुटि संदेश और एक notice
. के रूप में एक पुष्टिकरण संदेश के रूप में।
उन्हें अलग करने से आपको उन्हें अलग ढंग से स्टाइल करने में मदद मिलती है।
उदाहरण के लिए :
आप लाल रंग में अलर्ट और हरे रंग में नोटिस दिखा सकते हैं।
add_flash_types
. का उपयोग करके अपने स्वयं के फ़्लैश प्रकार बनाना भी संभव है नियंत्रक विधि।
इसे पसंद करें :
class ApplicationController add_flash_types :info, :error, :warning end
मुझे चीजों को सरल रखना पसंद है, इसलिए मैं बिल्ट-इन प्रकारों के साथ रहता हूं 🙂
फ्लैश संदेश प्रस्तुत करना
फ़्लैश संदेश स्वचालित रूप से नहीं दिखाए जाते हैं।
आपको उन्हें अपने विचारों में से एक के अंदर प्रस्तुत करना होगा ताकि उपयोगकर्ता उन्हें देख सकें।
इसे अपने एप्लिकेशन लेआउट में जोड़ने पर विचार करें।
यहां एक कोड उदाहरण दिया गया है :
<% flash.each do |type, msg| %> <%= msg %> <% end %>
इसे जहां भी आप अपना नोटिस दिखाना चाहते हैं, आमतौर पर पृष्ठ के शीर्ष पर, मेनू बार के नीचे रखें।
याद रखें :
एक बार जब आप एक संदेश प्रस्तुत करते हैं तो उसे flash
. से हटा दिया जाएगा , इसलिए इसे फिर से नहीं दिखाया जाएगा।
आपके नोटिस और अलर्ट संदेशों को स्टाइल करना
फ़्लैश संदेशों में कोई अंतर्निहित डिज़ाइन या शैली नहीं होती है।
समाधान?
यदि आप बूटस्ट्रैप का उपयोग कर रहे हैं, तो आप "alert alert-info"
. का उपयोग कर सकते हैं फ़्लैश संदेशों को अच्छा दिखाने के लिए CSS क्लास।
उदाहरण :
<% flash.each do |type, msg| %> <%= msg %> <% end %>
ऐसा दिखता है :
यदि आप बूटस्ट्रैप का उपयोग नहीं कर रहे हैं, तो आप इसे अपनी इच्छानुसार दिखने के लिए अपना स्वयं का सीएसएस लिख सकते हैं।
फ़्लैश संदेश कब प्रस्तुत किए जाते हैं?
आपके द्वारा प्रदर्शित किए जाने के बाद, फ्लैश संदेश केवल आपकी अगली नियंत्रक कार्रवाई पर निकाले जाते हैं।
निहितार्थ :
- यदि आप
redirect_to
, फिर एकflash
render प्रस्तुत करें संदेश, यह अच्छा है - यदि आप
redirect_to
और संदेश प्रस्तुत न करें, संदेशflash
. में चारों ओर चिपक जाएगा हैश - यदि आप
render
उसी क्रिया पर जिस पर आपflash
सेट कर रहे हैं संदेश, वहflash
संदेश उपलब्ध होगा, लेकिन हटाया नहीं जाएगा इसलिए यह आसपास रहेगा और संभावित रूप से दो बार दिखाया जाएगा
तो…
क्या होगा यदि आप वर्तमान कार्रवाई के लिए फ़्लैश संदेश . सेट करना चाहते हैं ?
वहीं flash.now
अंदर आता है!
यहां एक उदाहरण दिया गया है :
def index @books = Book.all flash.now[:notice] = "We have exactly #{@books.size} books available." end
यह index
रेंडर करेगा देखें।
notice
संदेश दिखाया जाएगा और flash
से हटा दिया जाएगा इसलिए इसे दो बार नहीं दिखाया जाएगा।
दूसरे शब्दों में :
आपको केवल flash.now
. का उपयोग करने की आवश्यकता है अगर आप render
करने जा रहे हैं रीडायरेक्ट करने के बजाय।
सारांश
आपने रेल में फ्लैश संदेशों और उनका सही तरीके से उपयोग करने के बारे में सीखा है!
बीटीडब्ल्यू, फ्लैश संदेश सत्यापन त्रुटियों के समान नहीं हैं। सत्यापन मॉडल ऑब्जेक्ट से जुड़े होते हैं, और आप इन सत्यापन संदेशों को errors
. के साथ एक्सेस करते हैं विधि, जैसे @user.errors
।
अब आपकी बारी है कि आप कुछ कोड लिखकर इसे व्यवहार में लाएं।
पढ़ने के लिए धन्यवाद!