रेल में सहायक क्या हैं?
एक सहायक एक विधि है जो (ज्यादातर) आपके रेल विचारों में पुन:प्रयोज्य कोड साझा करने के लिए उपयोग की जाती है। रेल अंतर्निहित सहायक विधियों के एक सेट के साथ आती है।
इन अंतर्निहित सहायकों में से एक है 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
इस तरह आप अपने कंट्रोलर से हेल्पर्स का इस्तेमाल कर सकते हैं। लेकिन ऐसा करने से पहले दो बार सोचें क्योंकि यह एक डिज़ाइन समस्या हो सकती है।
इसके बजाय एक सादे रूबी ऑब्जेक्ट का उपयोग करने पर विचार करें।
रेल कंसोल के साथ मज़ा
मुझे तरीकों को आजमाने और चीजों के साथ खेलने के लिए रेल कंसोल (आपके रेल ऐप लोड के साथ आईआरबी) का उपयोग करना अच्छा लगता है।
सहायक शामिल हैं!
आप कंसोल से हेल्पर्स का उपयोग helper.method_name
. के साथ कर सकते हैं ।
"सहायक" के विलक्षण रूप पर ध्यान दें ताकि आपको कोई त्रुटि संदेश न मिले। और याद रखें कि कंसोल स्वचालित रूप से कोड परिवर्तन को पुनः लोड नहीं करता है।
रेल सहायकों को देखने के लिए सर्वोत्तम अभ्यास
आपको एक सहायक विधि कब बनानी चाहिए?
जब भी आपके पास तर्क होता है जो HTML के बिट्स उत्पन्न करता है।
आमतौर पर, यह दो श्रेणियों में से एक में आता है, एक स्ट्रिंग स्वरूपण है और दूसरा सशर्त पृष्ठ तत्व है।
एक और युक्ति…
यदि आप लिखना चाहते हैं कि अच्छे सहायक किसी भी आवृत्ति चर का उपयोग नहीं करते हैं, तो वे आपके वर्तमान दृश्य में उपलब्ध हो सकते हैं, लेकिन वे किसी अन्य दृश्य में नहीं हो सकते हैं।
इसके परिणामस्वरूप वेरिएबल गुम होने के कारण त्रुटि होगी।
समाधान?
पैरामीटर का उपयोग करें, ताकि आपकी विधि के लिए आवश्यक कोई भी डेटा स्पष्ट और स्पष्ट हो ।
# wrong way def eat_healthy @fruit.eat end # do this instead def eat_healthy(fruit) fruit.eat end
मेरा अंतिम सुझाव है कि आप अपने हेल्पर्स को मॉड्यूल में विभाजित करें, जहां प्रत्येक मॉड्यूल का नाम स्पष्ट रूप से बताता है कि इसमें किस तरह के तरीके शामिल हैं।
हालांकि :
यह डुप्लिकेट विधि नामों में मदद नहीं करेगा, जिसके परिणामस्वरूप त्रुटियां और भ्रम हो सकते हैं।
आपके सभी सहायकों के अद्वितीय नाम होने चाहिए ।
एक विकल्प के रूप में, प्रस्तुतकर्ता वस्तुओं का उपयोग करने का प्रयास करें, जैसा कि इस गाइड में बताया गया है।
सारांश
आपने रेल में सहायकों के बारे में सीखा है! उपयोगिता विधियों का एक सेट जिसका उपयोग आप अपने विचारों में जटिल तर्क को स्वरूपित करने और संभालने के लिए कर सकते हैं।
अब अपने स्वयं के सहायक बनाने का समय आ गया है।
पढ़ने के लिए धन्यवाद