फॉर्म और रूबी ऑन रेल्स
<पी> रूबी ऑन रेल्स वास्तव में भवन निर्माण अनुप्रयोगों को सरल बनाती है। फिर भी, आपके कोडबेस को सुव्यवस्थित और सुसंगत बनाए रखने के लिए आपके निरंतर ध्यान की भी आवश्यकता है। उदाहरण के लिए, एक रणनीति अमूर्त का उपयोग करके कोड लिखने से बचना है। वह कोड जो आपके वास्तविक एप्लिकेशन में नहीं है, वह कोड है जिसे आपको प्रबंधित करने की आवश्यकता नहीं है। इसीलिए हमें अमूर्तताएँ इतनी पसंद हैं, है न? सिंपल फॉर्म एक ऐसा अमूर्तीकरण है जो वेब पेजों के लिए फॉर्म बनाने को सरल बनाता है। <पी> फॉर्म बनाना आम तौर पर जटिल होता है, यहां तक कि रूबी ऑन रेल्स का उपयोग करके भी। प्रत्येक फ़ील्ड को सही प्रकार को परिभाषित करने और उसे सही विशेषता से जोड़ने पर ध्यान देने की आवश्यकता है। सरल फ़ॉर्म उस दर्द को कम करता है, क्योंकि आपको प्रत्येक फ़ील्ड के लिए आवश्यक सटीक प्रकार खोजने की आवश्यकता नहीं है। <पी> चलिए एक फॉर्म लेते हैं जिसमेंname के साथ उपयोगकर्ता का विवरण मिलता है , username , और email खेत. विचार करें कि हमारे पास User है समान संबंधित विशेषताओं वाला मॉडल। सरल फ़ॉर्म के साथ, विशेषताओं को भरने वाला फ़ॉर्म निम्नलिखित जैसा दिखता है: <पी> ध्यान दें कि हम प्रत्येक फ़ील्ड के प्रकार निर्दिष्ट नहीं कर रहे हैं। सिंपल फॉर्म कॉलम के प्रकार के आधार पर प्रत्येक फ़ील्ड के लिए सही इनपुट प्रकार का चयन करेगा। <पी> इससे हमारा समय बचता है और कोड पढ़ने योग्य और बनाए रखने में आसान रहता है। सरल फॉर्म स्थापित करना
<पी> अपने प्रोजेक्ट में सिंपल फॉर्म इंस्टॉल करने के लिए,simple_form जोड़ें जेमफ़ाइल को रत्न। एक बार जब आप bundle install चला लें , आप अपने एप्लिकेशन के लिए इसे सही ढंग से सेट करने के लिए इसमें शामिल जनरेटर का उपयोग कर सकते हैं। <पी> बूटस्ट्रैप और ज़र्ब फाउंडेशन पर एक नोट: बूटस्ट्रैप और ज़र्ब फाउंडेशन 5 दोनों सिंपल फॉर्म में समर्थित हैं। इसलिए, यदि आप उनमें से किसी एक का उपयोग कर रहे हैं, तो आप --bootstrap का उपयोग कर सकते हैं या --foundation इंस्टॉलेशन के दौरान अतिरिक्त कॉन्फ़िगरेशन शामिल करने के लिए जनरेटर के साथ पैरामीटर। बूटस्ट्रैप के मामले में, यह निम्नलिखित जैसा दिखेगा: पी> सरल फॉर्म का मूल उपयोग
<पी> जैसा कि हमने पहले बताया, सिंपल फॉर्म मुख्य रूप से आपके ऑब्जेक्ट से संबंधित डेटा के आधार पर एक पूर्ण फॉर्म तैयार करेगा। फिर भी, यह समझना भी महत्वपूर्ण है कि सिंपल फॉर्म न केवल प्रत्येक विशेषता के लिए उपयुक्त फ़ील्ड उत्पन्न करेगा बल्कि लेबल भी प्रदान करेगा और इनपुट फ़ील्ड के ऊपर त्रुटि संकेत भी प्रदर्शित करेगा! <पी> आइए एक नए रूबी ऑन रेल्स 7.x एप्लिकेशन पर विचार करें। हम एक उपयोगकर्ता मॉडल तैयार करेंगे और सरल फॉर्म का उपयोग करके इसके लिए एक फॉर्म बनाएंगे। <पी> अब हमnew के साथ एक नियंत्रक उत्पन्न कर सकते हैं , create , और index कार्रवाई. उद्देश्य यह है कि हमारे पास कुछ ऐसी चीज़ हो जिसके साथ हम खेल सकें। <पी> इन कार्रवाइयों के लिए प्रासंगिक विचारों की आवश्यकता होती है। यहां एक फॉर्म है जो साइन अप करने वाले या जोड़े जाने वाले उपयोगकर्ता को संभालता है: <पी> इस मामले में, हम username के लिए एक कस्टम लेबल और त्रुटि निर्दिष्ट करते हैं इनपुट. यदि ऐसा कोई अनुकूलन पारित नहीं हुआ है, तो यह अनुमान लगाने की पूरी कोशिश की जाएगी कि विशेषता के नाम के आधार पर लेबल को क्या होना चाहिए। <पी> हमने password के लिए एक कस्टम संकेत सेट किया है फ़ील्ड और एक कस्टम placeholder email के लिए फ़ील्ड. फ़ील्ड के ऊपर स्थित "इनलाइन लेबल" (फ़ॉर्म में सामान्य डिफ़ॉल्ट) के बजाय "इनलाइन लेबल" निर्दिष्ट करने की क्षमता पर भी ध्यान दें। <पी> false पास करके लेबल, संकेत और त्रुटियों को अक्षम करना भी संभव है उन विशेषताओं के लिए मान:<%= f.input :password_confirmation, label: false %> . <पी> हमें इसे प्रयोग योग्य बनाने के लिए इसे एक और दृष्टिकोण के साथ पूरक करने की आवश्यकता है। <पी> फिर आप rails s का उपयोग करके एप्लिकेशन प्रारंभ कर सकते हैं . localhost:3000/users/new पर जाएं फॉर्म को देखने और उपयोग करने के लिए। आइए इस बात पर ध्यान दें कि फॉर्म क्लासिक रूबी ऑन रेल्स फॉर्म से कैसे भिन्न है। <पी> सत्यापन पर एक नोट :सरल फॉर्म बॉक्स से बाहर अनिवार्य फ़ील्ड के साथ काम कर सकता है। उदाहरण के लिए, यदि हमें अपने उपयोगकर्ता मॉडल में निम्नलिखित उपस्थिति सत्यापन जोड़ना था: पी> <पी> इसका उपयोग सिंपल फॉर्म द्वारा username के आगे थोड़ा सा '*' जोड़ने के लिए किया जाएगा। फ़ील्ड, यह निर्दिष्ट करते हुए कि यह अनिवार्य है। यह त्रुटियों को स्वचालित रूप से प्रबंधित नहीं करता है, इसलिए आपको अभी भी नियंत्रक कार्रवाई में इसे संभालना होगा। उस उपयुक्त फ़ील्ड पर वापस लौटें जिसमें त्रुटियाँ हैं और उन पर कार्रवाई करें। पी> कॉलम प्रकार और फॉर्म फ़ील्ड के बारे में
<पी> जैसा कि पहले बताया गया है, हमने प्रत्येक फ़ील्ड के लिए कोई प्रकार निर्दिष्ट नहीं किया है। सरल फॉर्म README में सभी उपलब्ध इनपुट प्रकारों और प्रत्येक कॉलम प्रकार के लिए डिफ़ॉल्ट की पूरी सूची है। यहां सबसे अधिक उपयोग किए जाने वाले हैं:बूलियन्स
<पी> जैसा कि हम उपरोक्त तालिका में देख सकते हैं, बूलियन विशेषताओं को डिफ़ॉल्ट रूप से, चेकबॉक्स के रूप में दर्शाया जाएगा। कई मामलों में, हम यही चाहेंगे। लेकिन यदि नहीं, तोas के साथ इसे सरल रूप में अनुकूलित करने का एक तरीका है विशेषता, जो आपको यह निर्दिष्ट करने की अनुमति देती है कि क्या आप इसके बजाय रेडियो बटन या ड्रॉपडाउन दिखाएंगे। <पी> इसके बजाय रेडियो बटन निर्दिष्ट करने का तरीका यहां बताया गया है: <पी> यह निम्नलिखित HTML उत्पन्न करेगा: <पी> यह प्रभावशाली है कि रूबी कोड का इतना छोटा टुकड़ा आपको HTML का इतना पूरा टुकड़ा देता है! HTML
<पी> पिछले उदाहरण से, हम देख सकते हैं कि कैसे सिंपल फॉर्म प्रत्येक फ़ील्ड के लिए बहुत सारे HTML उत्पन्न करता है। इसमें इनपुट फ़ील्ड के लिए HTML और लेबल और इनपुट फ़ील्ड के चारों ओर एक रैपर div शामिल है। हमinput_html का उपयोग करके एक कस्टम वर्ग और आईडी निर्दिष्ट करके उन्हें अनुकूलित कर सकते हैं और wrapper_html विशेषताएँ यहाँ एक उदाहरण है. <पी> यह संबंधित HTML के लिए विशेषताएँ सेट करने का एक तरीका भी है, जैसे maxlength या value . आइए हमारे उपयोगकर्ता प्रपत्र से पासवर्ड फ़ील्ड लें। हम maxlength के साथ फ़ील्ड के आकार और लंबाई को सीमित कर सकते हैं विशेषता. कस्टम इनपुट और अतिरिक्त विकल्प
<पी> सिंपल फॉर्म एक रूबी लाइब्रेरी है जो आपके लिए HTML नोड्स तैयार करती है। यह फ़ील्ड के पूरे सेट के साथ आता है, लेकिन आप अपना स्वयं का फ़ील्ड भी जोड़ सकते हैं। ऐसा करने के लिए, आप सिंपल फॉर्म की कक्षाओं से विरासत में मिली कक्षाएं बना सकते हैं। आइए वास्तविक फ़ील्ड के सामने थोड़े से '@' उपसर्ग के साथ एक कस्टम सोशल नेटवर्क इनपुट फ़ील्ड को परिभाषित करने पर विचार करें। <पी> अब हम इसे निम्नलिखित तरीके से उपयोग कर सकते हैं: <पी> ध्यान दें, यदि आपके उपयोगकर्ता मॉडल मेंnetwork_handle नहीं है विशेषता, आपको इसे माइग्रेशन के माध्यम से जोड़ना होगा या attr_accessor के साथ धोखा देना होगा मॉडल में. i18n समर्थन
<पी> जैसा कि हमने उल्लेख किया है, भवन निर्माण अक्सर एक समस्या बिंदु होता है। लेकिन जब कई भाषाओं का समर्थन करने वाली वेबसाइटों और एप्लिकेशन की बात आती है तो चीजें और भी दर्दनाक हो जाती हैं। सरल फॉर्म, सौभाग्य से, रूबी ऑन रेल्स मानकों का पालन करता है। आपsimple_form का उपयोग कर सकते हैं सभी लेबल, संकेत, प्लेसहोल्डर, संकेत आदि के लिए अनुवाद परिभाषित करने के लिए स्थानीय फ़ाइलों में कुंजी। <पी> यहाँ एक छोटा सा उदाहरण है: वैल्यू ऑब्जेक्ट
<पी> कभी-कभी, हम उस मुख्य ऑब्जेक्ट को तुरंत चालू करने के लिए कस्टम, गैर-एक्टिवरिकॉर्ड कक्षाओं का उपयोग कर सकते हैं जिस पर एक फॉर्म निर्भर करता है। यह या तो व्यावसायिक तर्क कारणों से कई मॉडलों से डेटा को सिंथेटिक में संकलित करने के लिए या एक ही ऑब्जेक्ट में कई विशेषताओं को इकट्ठा करने के लिए किया जा सकता है। <पी> कारण जो भी हो, आप अभी भी उस प्रकार की वस्तु के लिए फॉर्म बनाने के लिए सिंपल फॉर्म पर भरोसा कर सकते हैं। ऐसा करने के लिए, ऑब्जेक्ट क्लास को सर्वोत्तम स्थिति में, तीन तरीकों को लागू करने की आवश्यकता है:to_model , to_key , और persisted? . <पी> to_model विधि वस्तु की ओर ही इंगित करेगी: <पी> to_key हमें ऑब्जेक्ट के लिए पहचानकर्ता विशेषता को इंगित करने की अनुमति देता है - आमतौर पर, इसका मतलब है id विशेषता का नाम: <पी> अंत में, persisted? यह विधि सरल रूप में यह बताने के लिए है कि वस्तु सीधे बनी हुई है या नहीं। <पी> यदि वह विधि मौजूद नहीं है, तो f.submit हेल्पर प्रयोग करने योग्य नहीं है. <पी> हालाँकि, एक तेज़ तरीका भी है - जिसमें ActiveModel::Model भी शामिल है कक्षा में मॉड्यूल: <पी> और आइए इसे उपयोगकर्ता मॉडल के माध्यम से उपयोग करें। <पी> फिर हम उपयोगकर्ता फॉर्म के भीतर कंपनी के नाम के लिए एक फ़ील्ड जोड़ सकते हैं: <पी> बेशक, यह विशेषता किसी तालिका में सहेजी नहीं जाएगी। हालाँकि, एक ही अवधारणा को कई मॉडलों से खींची गई विशेषताओं के साथ एक मूल्य वस्तु बनाने के लिए लागू किया जा सकता है। समापन
<पी> इस पोस्ट में, हमने देखा है कि सिंपल फॉर्म को आपके रूबी ऑन रेल्स एप्लिकेशन में इंस्टॉल और एकीकृत करना आसान है। सरल फ़ॉर्म न केवल आपके फ़ॉर्म में प्रत्येक फ़ील्ड के विवरण का ध्यान रखता है, बल्कि जटिल और पूर्ण HTML भी उत्पन्न करता है ताकि आपके फ़ॉर्म को आसानी से स्टाइल और आकार दिया जा सके। <पी> मैं आपको सिंपल फॉर्म के दस्तावेज़ीकरण को गहराई से देखने के लिए प्रोत्साहित करता हूँ कि यह कितना शक्तिशाली हो सकता है। <पी> हैप्पी कोडिंग! <पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! पी>