रेल्स में हेल्पर्स क्या हैं?
एक हेल्पर एक मेथड है जो (ज्यादातर) आपके रेल्स व्यूज में पुन: प्रयोज्य कोड साझा करने के लिए उपयोग किया जाता है। रेल्स बिल्ट-इन हेल्पर मेथड्स के एक सेट के साथ आता है।
इन बिल्ट-इन हेल्पर्स में से एक time_ago_in_words है।
यहां एक उदाहरण है:
time_ago_in_words(Time.now) # "less than a minute" time_ago_in_words(Time.now + 60) # "1 minute" time_ago_in_words(Time.now + 600) # "10 minutes"
यह मेथड जब भी आप इस विशिष्ट प्रारूप में समय प्रदर्शित करना चाहते हैं तो उपयोगी होता है।
एक और रेल्स व्यू हेल्पर है number_to_human।
उदाहरण:
number_to_human(10_000) # "10 Thousand"
यह बहुत अच्छा है जब आप एक नंबर लेना चाहते हैं और इसे वैसे ही प्रिंट करना चाहते हैं जैसे आप इसे पढ़ेंगे, जो इसे अधिक मानवीय महसूस कराता है।
आप रूबी ऑन रेल्स डॉक्यूमेंटेशन में अधिक हेल्पर्स पा सकते हैं।
लेकिन क्या आप जानते हैं कि आप अपने खुद के लिख सकते हैं?
अपने स्वयं के हेल्पर मेथड्स लिखना
यदि आप कस्टम हेल्पर मेथड्स लिखना चाहते हैं, तो सही डायरेक्टरी पथ app/helpers है।
आप अपने हेल्पर्स को एक हेल्पर मॉड्यूल के अंदर लिखते हैं।
हर रेल्स एप्लिकेशन डिफ़ॉल्ट रूप से एक बेस हेल्पर मॉड्यूल के साथ आता है, जिसे ApplicationHelper कहा जाता है।
यहां आप अपने हेल्पर मेथड्स जोड़ सकते हैं।
ये मेथड्स स्वचालित रूप से आपके सभी व्यूज के लिए उपलब्ध हो जाते हैं। बाद में आप सीखेंगे कि कंट्रोलर्स में उनका उपयोग कैसे करें और यह खराब विचार क्यों हो सकता है।
आप अपने सभी हेल्पर्स ApplicationHelper में लिख सकते हैं।
लेकिन एक और विकल्प है...
आप हेल्पर मॉड्यूल्स बना सकते हैं ताकि आप अपने मेथड्स को बेहतर ढंग से व्यवस्थित कर सकें।
निर्देश:
app/helpersके तहत एक नई फ़ाइल बनाएं- इसे
user_helper.rbजैसा कुछ नाम दें - एक नया मॉड्यूल जोड़ें जो फ़ाइल नाम से मेल खाता हो
उदाहरण:
# app/helpers/user_helper.rb module UserHelper def format_name(user) if user.gender == "M" "Mr. #{user.name}" else "Ms. #{user.name}" end end end यह कोड किसी व्यक्ति को उनके लिंग के आधार पर औपचारिक तरीके से संबोधित करने के लिए उपयोग किया जा सकता है।
मुख्य लाभ?
जब आपको इसकी आवश्यकता हो तो आपको अन्य व्यूज में इस तर्क को दोहराना नहीं पड़ता और जब आपको कोड बदलने की आवश्यकता होती है... यह केवल एक स्थान पर बदलना पड़ता है।
बहुत अच्छा!
अपने नए हेल्पर मॉड्यूल का उपयोग करना
आप अपने हेल्पर मेथड्स को अपने व्यूज में उपयोग कर सकते हैं।
इस तरह:
<%= format_name(@user) %>
आसान, है ना?
यदि आप व्यूज के बाहर हेल्पर्स का उपयोग करना चाहते हैं तो आपको कुछ और चाहिए होगा।
कंट्रोलर्स से हेल्पर्स का उपयोग कैसे करें
यह संभव है, हालांकि बहुत आम नहीं, कंट्रोलर एक्शन्स से हेल्पर मेथड्स का उपयोग करना।
रेल्स 5 से पहले, आपको हेल्पर मॉड्यूल शामिल करना पड़ता था।
नए संस्करणों में, आप अपने कंट्रोलर में helpers (बहुवचन) ऑब्जेक्ट के साथ हेल्पर्स का उपयोग कर सकते हैं।
इस तरह:
class UsersController def index helpers.time_ago_in_words(Time.now) end end
इस तरह आप अपने कंट्रोलर से हेल्पर्स का उपयोग कर सकते हैं। लेकिन ऐसा करने से पहले दो बार सोचें क्योंकि यह डिज़ाइन समस्या हो सकती है।
इसके बजाय एक सादे रूबी ऑब्जेक्ट का उपयोग करने पर विचार करें।
रेल्स कंसोल के साथ मज़ा
मुझे रेल्स कंसोल (आपके रेल्स ऐप के साथ लोडेड irb) का उपयोग मेथड्स आज़माने और चीजों के साथ खेलने के लिए पसंद है।
हेल्पर्स शामिल!
आप कंसोल से helper.method_name के साथ हेल्पर्स का उपयोग कर सकते हैं।
"हेल्पर" के एकवचन रूप पर ध्यान दें ताकि आपको त्रुटि संदेश न मिले। और याद रखें कि कंसोल कोड परिवर्तनों को स्वचालित रूप से रीलोड नहीं करता है।
रेल्स व्यू हेल्पर्स लिखने के लिए सर्वोत्तम अभ्यास
आपको हेल्पर मेथड कब बनाना चाहिए?
जब भी आपके पास ऐसा तर्क हो जो HTML के टुकड़े उत्पन्न करता है।
आमतौर पर, यह दो श्रेणियों में से एक में आता है, एक स्ट्रिंग फॉर्मेटिंग है और दूसरा सशर्त पेज एलिमेंट्स है।
एक और टिप...
यदि आप अच्छे हेल्पर्स लिखना चाहते हैं तो किसी इंस्टेंस वेरिएबल का उपयोग न करें, वे आपके वर्तमान व्यू में उपलब्ध हो सकते हैं, लेकिन वे दूसरे व्यू में नहीं हो सकते।
इससे गायब वेरिएबल्स के कारण त्रुटि होगी।
समाधान?
पैरामीटर्स का उपयोग करें, ताकि आपके मेथड को जिस डेटा की आवश्यकता है वह स्पष्ट और व्यावहारिक हो।
# गलत तरीका def eat_healthy @fruit.eat end # इसके बजाय यह करें def eat_healthy(fruit) fruit.eat end
मेरी अंतिम टिप है कि अपने हेल्पर्स को मॉड्यूल्स में विभाजित करें, जहां प्रत्येक मॉड्यूल नाम स्पष्ट रूप से बताता है कि इसमें किस प्रकार के मेथड्स हैं।
हालांकि:
यह डुप्लिकेट मेथड नामों के साथ मदद नहीं करेगा, जिसके परिणामस्वरूप त्रुटियां और भ्रम हो सकते हैं।
आपके सभी हेल्पर्स के अद्वितीय नाम होने चाहिए।
एक विकल्प के रूप में, इस गाइड में समझाए अनुसार प्रेजेंटर ऑब्जेक्ट्स का उपयोग करने का प्रयास करें।
सारांश
आपने रेल्स में हेल्पर्स के बारे में सीखा! यूटिलिटी मेथड्स का एक सेट जिसका उपयोग आप अपने व्यूज में फॉर्मेटिंग और जटिल तर्क को संभालने के लिए कर सकते हैं।
अब अपने खुद के हेल्पर्स बनाने का समय है।
पढ़ने के लिए धन्यवाद 🙂