मॉडल लापता हैंडलिंग: डाक और उपयोगकर्तारेल 4 मजबूत पैरामीटर - मॉडल पैरामीटर हैश
पोस्ट belongs_to: उपयोगकर्ता
उपयोगकर्ता has_many: पदों
सरल।
कुछ उपयोगकर्ताओं का मानना है कि हम एक पोस्ट के लिए संपादन पृष्ठ पर जाते हैं।
<%= form_for @post do |f| %>
...
<% User.all.each do |user| %>
<div><%= f.radio_button "user_id", user.id %></div>
<% end %>
...
पोस्ट के नियंत्रक रेल 4 मजबूत मापदंडों लाभ उठाता है।
params.require(:post).permit(:user_id)
मान लें कि संपादन पोस्ट फॉर्म में केवल रेडियो बटन फ़ील्ड के रूप में हैं।
समस्या: एक्शनकंट्रोलर :: पैरामीटर मिसिंग अपवाद फेंक दिया गया है। param नहीं मिला:
पोस्ट पैराम्स हैश का कारण कभी नहीं बनाया गया है, जिससे ऊपर अपवाद को फेंक दिया जा सकता है। उदाहरण के लिए खाली टेक्स्ट फ़ील्ड के विपरीत खाली रेडियो बटन, मॉडल के पैरा हैश को बनाए जाने के लिए ट्रिगर न करें।
क्या होगा अगर पोस्ट मॉडल को उपयोगकर्ता_आईडी वैध होने की आवश्यकता हो? निश्चित रूप से कोई ऐसा दृश्य फिर से प्रस्तुत करना चाहता है जिसके कारण पोस्ट सहेजा नहीं जा सकता है।
प्रश्न: रेल सम्मेलन में चिपके रहते हुए इस स्थिति को संभालने का एक शानदार तरीका क्या है?
अद्यतन:
आगे इस बारे में बुद्धिशीलता, मुझे यकीन है कि वहाँ शायद अन्य स्थितियों जो इस समस्या उत्पन्न के बहुत सारे हैं हूँ, यह आवश्यक रूप से रेडियो बटन से मेल नहीं खाता है।
मेरे पास एक भी वीडर मुद्दा है ...मुझे मॉडल हैश के लिए एक ही पैराम नहीं मिला है, लेकिन मैं जो परीक्षण कर रहा हूं वह यूजर के दो फ़ील्ड के साथ @user है और यह है। मेरा यूआरएल उपयोगकर्ता नाम का उपयोग करता है और मुझे लगता है कि यह आईडी या कुछ खो रहा था। लेकिन मेरे पास मेरी परियोजना का एक और हिस्सा है जो वही काम करता है। केवल अंतर यह है कि मैंने इस फॉर्म को मचान के बजाए स्क्रैच से बनाया है ... – dtc