Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Rails पैरामीटर्स मास्टर करना: उन्हें प्रभावी ढंग से एक्सेस और उपयोग कैसे करें

Rails कन्वेंशन्स: फॉर्म फील्ड्स और पैरामीटर्स

फॉर्म फील्ड्स और URL पैरामीटर्स params कीज़ से कैसे मैप होते हैं?

मेरे पास आपके लिए एक उदाहरण है।

यहाँ:

 

यह एक साधारण खोज फॉर्म है जो /search पर POST अनुरोध भेजेगा।

परिणामस्वरूप, आपको यह params ऑब्जेक्ट मिलेगा:

 { "q"=>"", "controller"=>"books", "action"=>"search" } 

यह "q" क्या है?

यह HTML फॉर्म में इनपुट फील्ड का नाम विशेषता है।

नाम कुछ भी हो सकता है जो आप चाहते हैं।

यदि आप form_for हेल्पर मेथड का उपयोग करके अपना फॉर्म बनाते हैं, तो नाम आपके लिए ऑटो-जेनरेट होते हैं और वे एक विशिष्ट पैटर्न का पालन करते हैं।

यहाँ एक उदाहरण है:

 # form_for(@book) कुछ फील्ड्स के साथ ऐसा कुछ जनरेट करता है 

फील्ड नामों में यह book[title] फॉर्मेट एक params हैश जनरेट करेगा जहां वैल्यूज नेस्टेड होंगी।

एक उदाहरण के साथ मुझे समझाने दें:

 { "book"=> { "title"=>"", "author"=>"", "cover"=>"", "language"=>"English" } } 

यूज़र एक खाली फॉर्म सबमिट करता है और यह वही है जो आपको मिलता है।

आपके कंट्रोलर से...

आप डेटा को इस तरह एक्सेस करते हैं:

 params[:book][:language] # "English"
params[:book][:author] # "" 

याद रखें कि यह एक हैश की तरह व्यवहार करता है, लेकिन एक नियमित हैश के विपरीत, यह सिंबल्स और स्ट्रिंग्स दोनों को समकक्ष कीज़ के रूप में स्वीकार करेगा।

मतलब params["book"] और params[:book] समान हैं।

अपने रूट्स को पैरामीटर्स स्वीकार करने में सक्षम करना

क्वेरी पैरामीटर्स के अलावा, आप REST-स्टाइल पैरामीटर्स को भी सक्षम कर सकते हैं।

Rails में, हम इसे "डायनामिक सेगमेंट" कहते हैं।

आइए एक उदाहरण देखें।

यदि आपके पास ऐसा रूट है:

 get 'books/:id', to: 'books#show' 

या:

 resources :books 

आप इस तरह के URLs का उपयोग कर पाएंगे:

 /books/1 

फिर आप इस 1 को एक्सेस कर सकते हैं, जो books/:id में id है।

params के साथ।

इस तरह:

 params[:id] 

यह आपको वह विशिष्ट संसाधन ढूंढने में मदद करेगा जिसे यूज़र ढूंढ रहा है।

 Book.find(params[:id]) 

Strong Params को समझना

अगला:

यदि आप अपने डेटाबेस में एक ऑब्जेक्ट सेव करने का प्रयास करते हैं, लेकिन यह काम नहीं करता लगता है।

अपने Rails सर्वर लॉग को देखें।

आप यह देख सकते हैं:

 Unpermitted parameter: :language 

इसका क्या मतलब है?

Rails ने "स्ट्रॉन्ग पैरामीटर्स" सिस्टम पेश किया, Rails 4 में एक सुरक्षा सुविधा के रूप में।

यह आपको उन विशेषताओं को व्हाइटलिस्ट करने के लिए मजबूर करता है जिन्हें सेव किया जा सकता है।

यह "मास असाइनमेंट" के रूप में जानी जाने वाली समस्या को रोकता है, जो दुर्भावनापूर्ण यूज़र्स को admin = true सेट करने, या अन्य फील्ड्स सेट करने की अनुमति देता है जिन तक आमतौर पर उनकी पहुंच नहीं होती।

आप फील्ड्स को इस तरह व्हाइटलिस्ट कर सकते हैं:

 def book_params
  params.require(:book).permit(:title, :author, :cover, :language)
end 

यह कैसे काम करता है?

  • require मेथड params[:book] की तलाश करेगा और यदि यह वहां नहीं है तो एरर उठाएगा
  • permit मेथड अनुमत (लेकिन वैकल्पिक) विशेषताओं की एक सूची है

परिणामस्वरूप, आपको इन विशेषताओं के साथ एक नया params हैश वापस मिलता है, लेकिन अब वे डेटाबेस में सेव होने के लिए क्लियर हैं।

उदाहरण:

 Book.create(book_params) 

ध्यान दें कि एक नियमित Ruby हैश इस सुरक्षा प्रणाली को बायपास कर देगा।

उदाहरण:

 Book.create(title: "", author: "", cover: "") 

यदि विशेषता नाम (जैसे author) हार्डकोडेड हैं तो यह ठीक होना चाहिए।

सारांश

आपने Rails पैरामीटर्स के बारे में सीखा, वे कैसे काम करते हैं और अपने Rails प्रोजेक्ट्स में उन्हें सही ढंग से कैसे उपयोग करें!

अब अभ्यास करने, नोट्स लेने, रिव्यू करने की आपकी बारी है 🙂

पढ़ने के लिए धन्यवाद।


  1. OmniAuth-Twitter के साथ Rails में ट्विटर लॉगिन एकीकृत करें: चरण-दर-चरण मार्गदर्शिका OmniAuth-Twitter के साथ Rails में ट्विटर लॉगिन एकीकृत करें: चरण-दर-चरण मार्गदर्शिका

    इस ट्यूटोरियल में, आप सीखेंगे कि अपने एप्लिकेशन के उपयोगकर्ताओं को उनके ट्विटर खाते का उपयोग करके लॉग इन करने की अनुमति कैसे दें। OAuth जैसे टूल के साथ ऐसा करना आसान हो गया है। आप OmniAuth-Twitter का उपयोग करेंगे, जिसमें OmniAuth के लिए ट्विटर रणनीति शामिल है। चलिए शुरू करते हैं! शुरुआत करना अपना R

  1. गूगल मैप्स प्लस कोड्स खोजें: दुनिया में किसी भी स्थान का पता लगाने के लिए एक सरल गाइड गूगल मैप्स प्लस कोड्स खोजें: दुनिया में किसी भी स्थान का पता लगाने के लिए एक सरल गाइड

    शायद आपने Google मैप्स प्लस कोड्स के बारे में सुना है लेकिन उनके बारे में अधिक जानने का समय नहीं मिला। या शायद आपने Google मैप्स का उपयोग करते समय स्थानों के लिए प्लस कोड देखे हैं और सोचा कि वे क्या थे। यहां हम संक्षेप में बताएंगे कि प्लस कोड क्या हैं, उनका उद्देश्य, और आप उन्हें Google मैप्स पर कैस

  1. सिसइंटर्नल्स अनावरण: विंडोज प्रशासन के लिए शक्तिशाली उपकरण सिसइंटर्नल्स अनावरण: विंडोज प्रशासन के लिए शक्तिशाली उपकरण

    क्या आपने कभी चाहा है कि आपके विंडोज कंप्यूटर पर आपका पूरा नियंत्रण हो? लगभग किसी भी विंडोज प्रक्रिया या एप्लिकेशन के अंदर देखने में सक्षम होना ही नहीं, बल्कि उन फाइलों और रजिस्ट्री प्रविष्टियों को रीयल-टाइम में देखना भी अविश्वसनीय है जिन्हें आपके एप्लिकेशन एक्सेस कर रहे हैं। सबसे प्रतिष्ठित और शक्त