रूबी ऑन रेल्स पर टिप्पणियां देना

click fraud protection

पिछली पुनरावृत्ति में, Restful Authentication को जोड़ना, प्रमाणीकरण को आपके ब्लॉग में जोड़ा गया था, ताकि केवल अधिकृत उपयोगकर्ता ही ब्लॉग पोस्ट बना सकें। यह पुनरावृत्ति ब्लॉग ट्यूटोरियल की अंतिम (और प्रमुख) विशेषता को जोड़ देगा: टिप्पणियाँ। इस ट्यूटोरियल के समाप्त होने के बाद, उपयोगकर्ता बिना लॉग इन किए ब्लॉग पोस्ट पर अनाम टिप्पणियाँ पोस्ट करने में सक्षम होंगे।

टिप्पणियाँ डेटाबेस टेबल और कंट्रोलर बनाना उसी तरह से किया जाता है जिस तरह से पोस्ट डेटाबेस टेबल और कंट्रोलर बनाया गया था - मचान जनरेटर का उपयोग करके। पाड़ जनरेटर रेस्टफुल कंट्रोलर्स, मैप रूट और डेटाबेस माइग्रेशन बनाएगा। लेकिन इससे पहले कि आप इस पर विचार करें, आपको यह सोचना होगा कि एक टिप्पणी क्या है और इसके डेटा सदस्य क्या होंगे। एक टिप्पणी है:

एक बार जब आप तय कर लेते हैं कि किसी टिप्पणी के डेटा सदस्य क्या हैं, तो आप पाड़ जनरेटर चला सकते हैं। ध्यान दें कि पोस्ट फ़ील्ड "संदर्भों" का प्रकार है। यह एक विशेष प्रकार है जो एक विदेशी कुंजी के माध्यम से टिप्पणी तालिका को पोस्ट तालिका के साथ लिंक करने के लिए एक आईडी फ़ील्ड उत्पन्न करेगा।

एक बार नियंत्रक और माइग्रेशन उत्पन्न हो जाने पर, आप आगे बढ़ सकते हैं और db चलाकर माइग्रेशन चला सकते हैं: रेक कार्य को माइग्रेट करें।

instagram viewer

एक बार डेटाबेस तालिकाओं के स्थान पर होने के बाद, आप मॉडल सेट करना शुरू कर सकते हैं। मॉडल में, डेटा सत्यापन जैसी चीजें - यह सुनिश्चित करने के लिए कि आवश्यक फ़ील्ड मौजूद हैं - और संबंधों को परिभाषित किया जा सकता है। दो संबंधों का उपयोग किया जाएगा।

एक ब्लॉग पोस्ट में कई टिप्पणियां हैं। Has_many संबंध को पोस्ट तालिका में किसी विशेष फ़ील्ड की आवश्यकता नहीं है, लेकिन टिप्पणी तालिका में पोस्ट टेबल से इसे लिंक करने के लिए पोस्ट_ड है। से रेल, आप जैसी बातें कह सकते हैं @टिप्पणियां भेजें @ ऑब्जेक्ट से संबंधित टिप्पणी ऑब्जेक्ट की सूची प्राप्त करने के लिए। टिप्पणियाँ भी हैं आश्रित उनके मूल पोस्ट ऑब्जेक्ट पर। यदि पोस्ट ऑब्जेक्ट नष्ट हो जाता है, तो सभी बच्चे टिप्पणी ऑब्जेक्ट्स को भी नष्ट कर दिया जाना चाहिए।

टिप्पणी पोस्ट ऑब्जेक्ट के अंतर्गत आती है। एक टिप्पणी केवल एक ही ब्लॉग पोस्ट के साथ जुड़ी हो सकती है। संबंध_ केवल संबंध के लिए टिप्पणी तालिका में केवल एक पोस्ट_ड फ़ील्ड की आवश्यकता होती है। किसी टिप्पणी के मूल पोस्ट ऑब्जेक्ट तक पहुंचने के लिए, आप कुछ ऐसा कह सकते हैं @ comment.post रेल में।

निम्नलिखित पोस्ट और टिप्पणी मॉडल हैं। टिप्पणी मॉडल में कई सत्यापन जोड़े गए हैं ताकि यह सुनिश्चित किया जा सके कि उपयोगकर्ता आवश्यक फ़ील्ड भरें। नोट के पास has_many और अंतर्गत_ संबंध भी हैं।

टिप्पणियों नियंत्रक का उपयोग उस पारंपरिक तरीके से नहीं किया जाएगा जो एक RESTful नियंत्रक का उपयोग किया जाता है। सबसे पहले, यह पूरी तरह से पोस्ट विचारों से एक्सेस किया जाएगा। टिप्पणी प्रपत्र और प्रदर्शन पूरी तरह से पोस्ट नियंत्रक की शो कार्रवाई में हैं। तो, शुरू करने के लिए, पूरे को हटा दें एप्लिकेशन / विचारों / टिप्पणियों टिप्पणी विचारों के सभी को हटाने के लिए निर्देशिका। उनकी जरूरत नहीं होगी।

अगला, आपको टिप्पणियाँ नियंत्रक से कुछ कार्यों को हटाने की आवश्यकता है। बस इतना ही चाहिए सृजन करना तथा नष्ट कार्रवाई। अन्य सभी कार्यों को हटाया जा सकता है। चूंकि टिप्पणियाँ नियंत्रक अब बिना किसी विचार के केवल एक स्टब है, इसलिए आपको नियंत्रक में कुछ स्थानों को बदलना होगा जहां यह टिप्पणियाँ नियंत्रक पर पुनर्निर्देशित करने का प्रयास करता है। जहां भी कोई रीडायरेक्ट_टो कॉल है, उसे बदल दें redirect_to (@ comment.post). नीचे पूर्ण टिप्पणी नियंत्रक है।

अंतिम टुकड़ों में से एक को जगह देने के लिए टिप्पणी फार्म है, जो वास्तव में एक सरल कार्य है। मूल रूप से करने के लिए दो चीजें हैं: पोस्ट कंट्रोलर के शो एक्शन में एक नई टिप्पणी ऑब्जेक्ट बनाएं और एक फॉर्म प्रदर्शित करें जो कमेंट कंट्रोलर की एक्शन बनाने के लिए सबमिट करता है। ऐसा करने के लिए, निम्न की तरह दिखने के लिए पोस्ट कंट्रोलर में शो कार्रवाई को संशोधित करें। जोड़ा लाइन बोल्ड में है।

अंतिम चरण वास्तव में प्रदर्शित करना है टिप्पणियाँ. उपयोगकर्ता इनपुट डेटा को प्रदर्शित करते समय ध्यान रखा जाना चाहिए क्योंकि उपयोगकर्ता HTML टैग डालने की कोशिश कर सकता है जो पृष्ठ को बाधित कर सकता है। इसे रोकने के लिए, विधि का उपयोग किया जाता है। यह विधि उपयोगकर्ता द्वारा इनपुट करने की कोशिश करने वाले किसी भी HTML टैग से बच जाएगी। आगे के पुनरावृत्ति में, एक मार्कअप भाषा जैसे कि RedCloth या फ़िल्टरिंग विधि को उपयोगकर्ताओं को कुछ HTML टैग पोस्ट करने की अनुमति देने के लिए लागू किया जा सकता है।

टिप्पणियां आंशिक रूप से प्रदर्शित की जाएंगी, जैसे कि पोस्ट थीं। नामक एक फ़ाइल बनाएँ एप्लिकेशन / विचारों / पदों / _comment.html.erb और इसमें निम्नलिखित पाठ रखें। यह टिप्पणी प्रदर्शित करेगा और, यदि उपयोगकर्ता लॉग इन है और टिप्पणी को हटा सकता है, तो टिप्पणी को नष्ट करने के लिए नष्ट लिंक भी प्रदर्शित करें।

अंत में, पोस्ट की सभी टिप्पणियों को एक साथ प्रदर्शित करने के लिए, टिप्पणियों को आंशिक रूप से कॉल करें : संग्रह => @ पोस्ट.कॉममेंट. यह पोस्ट के अंतर्गत आने वाली प्रत्येक टिप्पणी के लिए आंशिक रूप से टिप्पणियों को कॉल करेगा। पोस्ट कंट्रोलर में शो व्यू के लिए निम्न लाइन जोड़ें।

अगले ट्यूटोरियल पुनरावृत्ति में, simple_format को RedCloth नामक एक अधिक जटिल स्वरूपण इंजन के साथ बदल दिया जाएगा। RedCloth उपयोगकर्ताओं को आसान मार्कअप के साथ सामग्री बनाने की अनुमति देता है जैसे बोल्ड के लिए * बोल्ड * और इटैलिक के लिए _italic_। यह ब्लॉग पोस्टर और टिप्पणीकारों दोनों के लिए उपलब्ध होगा।

instagram story viewer