ViewComponent तक पहुंचता हूं मैं लगभग हर प्रोजेक्ट पर काम करता हूं। जैसा कि कहा गया है, मुझे अब भी लगता है कि विनम्र रेल आंशिक अभी भी कई उपयोग के मामलों के लिए बढ़िया काम करती है। <पी> रेल टीम हमेशा अपनी पेशकश को बेहतर बनाने की कोशिश कर रही है, तो आइए रेल 7.1 में पेश की गई एक नई सुविधा पर नजर डालें:सख्त स्थानीय! रेल आंशिक और स्थानीय चर
<पी> हम मनमाने ढंग से स्थानीय वैरिएबल को रेल आंशिक में पास कर सकते हैं और वे जादुई रूप से उपयोग के लिए उपलब्ध हैं। <पी> यह आदर्श नहीं है, क्योंकि यह पता लगाना मुश्किल है कि मार्कअप का एक बड़ा ब्लॉक होने पर आंशिक रूप से कौन से वेरिएबल स्वीकार होते हैं। साथ ही, चूंकि वेरिएबल गतिशील रूप से बनाए गए हैं, एक लापता वेरिएबलnil वापस नहीं आएगा लेकिन एक त्रुटि उत्पन्न होगी. <पी> मान लीजिए icon उपरोक्त आंशिक में वैकल्पिक था: <पी> हम इसे इस प्रकार प्रस्तुत करते हैं: <पी> इससे एक ActionView::Template::Error बढ़ जाएगा , संदेश undefined local variable or method 'icon' for #<ActionView::Base:0x00000000023078> के साथ . <पी> तथ्य यह है कि icon यह वैकल्पिक है यह पाठक के लिए भी स्पष्ट नहीं है। रेल्स 7.1 तक, समाधान local_assigns का निरीक्षण करना था हैश जिसमें सभी इंजेक्ट किए गए स्थानीय चर शामिल हैं। <पी> यह उपरोक्त त्रुटि को ठीक करता है क्योंकि icon वेरिएबल अब हमेशा सेट रहता है। <पी> रेल्स 7.1 सख्त स्थानीय की अवधारणा के साथ स्थानीय चर की कमियों को आंशिक रूप से संबोधित करने का प्रयास करता है। . रेल में सख्त स्थानीय लोग क्या हैं?
<पी> रेल्स 7.1 से शुरू करके, हम आंशिक के शीर्ष पर एक जादुई टिप्पणी लिख सकते हैं, जो इसे स्वीकार किए जाने वाले स्थानीय चर और उनके लिए किसी भी डिफ़ॉल्ट मान को परिभाषित करता है। <पी> रेल इस टिप्पणी को पार्स करती है और परिभाषित चर को आंशिक में सेट करती है। अब यह एक पाठक के लिए स्पष्ट रूप से स्पष्ट है जो आंशिक स्वीकार्यता और किसी भी डिफ़ॉल्ट मान को बदलता है। <पी> आंशिक को अभी भी ऊपर दिखाए अनुसार प्रस्तुत करना चाहिए।title को बाहर करने का प्रयास करें कॉल साइट से परिवर्तनीय और देखें क्या होता है: <पी> आपको एक ArgumentError मिलता है संदेश missing local: :title के साथ :पहले की तुलना में अधिक वर्णनात्मक त्रुटि संदेश! सख्त स्थानीय लोगों का उपयोग कब करें
<पी> सख्त स्थानीय लोग बेतुके हो सकते हैं, इसलिए उनका उपयोग करना हमेशा एक अच्छा विचार नहीं है, खासकर पुराने ऐप्स में। <पी> आइए एक ऐसा उपयोग मामला लें जो सख्त स्थानीय लोगों के लिए बिल्कुल उपयुक्त हो। मान लें कि हमारे पास एक कार्ड में उपयोगकर्ता का विवरण आंशिक रूप से दिखाया गया है , लेकिन केवल व्यवस्थापक ही देख सकते हैं कि उन्होंने अंतिम बार कब साइन इन किया था: <पी> यह आंशिक कई चर लेता है और इसमें एक वैकल्पिक चर होता है, जो इसे सख्त स्थानीय लोगों के लिए एक आदर्श मामला बनाता है। फ़ाइल में निम्नलिखित जादुई टिप्पणी जोड़ने से स्किम करना काफी आसान हो जाता है: <पी> किसी मॉडल से संबंधित आंशिक के मामले में (उदाहरण के लिएposts/_post.html.erb ), यह बिल्कुल स्पष्ट है कि ऐसा आंशिक एकल post स्वीकार करता है परिवर्तनशील. मुझे नहीं लगता कि इन मामलों के लिए सख्त स्थानीय लोग आवश्यक रूप से एक अच्छा विचार हैं। सख्त स्थानीय लोगों की पकड़
<पी> सावधान रहने के लिए कुछ गड़बड़ियाँ हैं, यही कारण है कि मैं बोर्ड भर में सख्त स्थानीय लोगों का उपयोग करने की अनुशंसा नहीं करता।संकलन को स्पष्ट रूप से प्रस्तुत करना
<पी> किसी संग्रह को अंतर्निहित रूप से प्रस्तुत करते समय: <पी> रेल_post को इंजेक्ट करती है post के अतिरिक्त दो चर के साथ आंशिक परिवर्तनशील. रेल 7.1.2 से पहले, किसी त्रुटि को रोकने के लिए इन्हें मैन्युअल रूप से परिभाषित करने की आवश्यकता होती थी: <पी> यह समस्या रेल्स 7.1.2 में ठीक कर दी गई थी और ये वेरिएबल अब वैकल्पिक हैं (लेकिन यह जानना अच्छा होगा कि यदि आवश्यक हो तो वे मौजूद हैं)! एक्शनकेबल पर प्रसारण
<पी> ActiveRecord कॉलबैक से ActionCable पर आंशिक प्रसारण करते समय: <पी> आपकोrequest_id निर्दिष्ट करना होगा स्थानीय वैरिएबल nil पर डिफ़ॉल्ट हो रहा है , क्योंकि इसका उपयोग रेल्स द्वारा हुड के नीचे किया जाता है। <पी> ऐसा न करने पर कॉलबैक ट्रिगर होने पर त्रुटि उत्पन्न होती है। <पी> और हमारा व्हिसल-स्टॉप दौरा पूरा हो गया! ध्यान में रखने योग्य कुछ बातें
<पी> मौजूदा आंशिक भागों में सख्त स्थानीय जोड़ना एक सब कुछ या कुछ नहीं है किसी दी गई फ़ाइल के लिए प्रस्ताव. हम किसी जादुई टिप्पणी में क्रमिक रूप से वैरिएबल नहीं जोड़ सकते, जैसा कि हम पाते हैं। जैसा कि उपरोक्त गोचर में दिखाया गया है, उन सभी चरों का पता लगाना मुश्किल हो सकता है जिन्हें जादुई टिप्पणी में घोषित करने की आवश्यकता है। <पी> यह देखते हुए कि सख्त स्थानीय लोगों के साथ कोड के बारे में तर्क करना कितना आसान है, मुझे लगता है कि वे नए ऐप्स में बड़े पैमाने पर उपयोग करने लायक हैं (और धीरे-धीरे पुराने ऐप्स में पूर्वव्यापी रूप से जोड़ना)। <पी> यह सुनिश्चित करना महत्वपूर्ण है कि लीगेसी ऐप्स में आपका परीक्षण सूट उन आंशिक भागों को कवर करता है जिनमें आप सख्त स्थानीय जोड़ते हैं। एक चूक एक अपवाद का कारण बनेगी, इसलिए आपको यह सुनिश्चित करना होगा कि आपने परिवर्तनों को लागू करने से पहले सभी उपयोग मामलों का परीक्षण कर लिया है। <पी> हालाँकि मैं जादुई टिप्पणी का बहुत बड़ा प्रशंसक नहीं हूँ दृष्टिकोण (जैसा कि मेरा मानना है कि टिप्पणियों में कभी भी कार्यक्षमता नहीं होनी चाहिए), मुझे लगता है कि सख्त स्थानीय रेल के लिए एक बढ़िया अतिरिक्त है। स्थानीय लोगों को आंशिक रूप से नियुक्त करना हमेशा से ही अजीब रहा है और इससे यह आसान हो जाता है। बस गड़बड़ियों से सावधान रहें!समापन
<पी> इस पोस्ट में, हमने रेल 7.1 में सख्त स्थानीय लोगों पर एक त्वरित नज़र डाली। सख्त स्थानीय और कुछ गोचा का उपयोग कब करना है इसकी खोज करने से पहले हमने देखा कि आंशिक और स्थानीय चर कैसे काम करते हैं। <पी> हैप्पी कोडिंग! <पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! पी>