docs on parameter wrapping राज्य:रेल पैरामीटर रैपिंग क्यों नहीं करता है जिसमें यूआरआई से चीजें शामिल हैं?
Wraps मापदंडों एक नेस्टेड हैश में हैश। यह ग्राहकों को किसी रूट तत्व निर्दिष्ट किए बिना POST अनुरोध सबमिट करने की अनुमति देगा।
यह मदद करता है जो पैरामीटर हैश लपेटा जा रहा है।
रेल
params
हैश में अनुरोध के साथ भेजा मानकों के सभी एकत्र करता है, चाहे वे क्वेरी स्ट्रिंग या पोस्ट शरीर के हिस्से के रूप में भेजे जाते हैं: Action Controller overview guide इस संक्षिप्त जानकारी दी गई देता है। [...]query_parameters
हैश में पैरामीटर शामिल हैं जो क्वेरी स्ट्रिंग के हिस्से के रूप में भेजे गए थे जबकिrequest_parameters
हैश में पोस्ट बॉडी के हिस्से के रूप में भेजे गए पैरामीटर शामिल हैं।path_parameters
हैश में पैरामीटर शामिल हैं जिन्हें रूटिंग द्वारा इस विशेष नियंत्रक और क्रिया के लिए पथ के हिस्से के रूप में पहचाना जाता है।
मज़ा तब होता है जब आप रीस्टफुल संसाधनों और मार्गों का उपयोग करते हैं। मान लें कि आपके पास एक मॉडल ए है जिसमें has_many बीएस है; बी इस प्रकार एक विदेशी कुंजी a_id
है।
आप POST /as/1/bs
खाली पेलोड के साथ (क्योंकि बी के पास कोई अन्य फ़ील्ड नहीं है)। a_id
मानना attr_accessible
है, कोई यह मान सकता है कि a_id
b
ऑब्जेक्ट में लपेटा जाएगा। इसके बजाय आप देखेंगे:
Processing by BsController#create as HTML
Parameters: {"b"=>{}, "a_id" => "1"}
ऐसी कोई किस्मत नहीं। यह पता चला है कि ParamsWrapper
uses request_parameters
और params
नहीं है, इसलिए POST पेलोड में a_id
सहित इसका अर्थ यह नहीं है कि यह लपेटा नहीं जाता है। यह बहुत भ्रमित है, क्योंकि आप अभी भी इसे params
में शामिल करते हैं, यूआरआई ग्लोबिंग के कारण, और आश्चर्य की बात है कि यह सभी चीजों को क्यों छोड़ दिया गया।
क्या request_parameters
का उपयोग करने के लिए कोई अच्छा कारण नहीं है और params
यहां नहीं है?
मैं समझ सकता हूं कि, "आरईएसटी दर्शन" बिंदु से, यह अधिक शुद्ध है अगर हम मानते हैं कि पेलोड में पूरी वस्तु है, लेकिन इसका अनिवार्य रूप से मतलब है कि यूआरआई में a_id
पूरी तरह से अनदेखा किया गया है, जो लगता है अफ़सोस की बात है।
tl; डॉ:ParamsWrapper
request_parameters
पैरामीटर स्रोत के रूप में उपयोग करता है, तो यूआरआई-globbed चर को छोड़ दिया जाता है। क्या यह एक रेल बग है? शुद्ध आरईएसटी वकील नहीं कह सकते हैं, लेकिन व्यावहारिकता हां सुझाती है।
नमस्कार! क्या आपने यह पता लगाया है कि इस मुद्दे को कैसे प्राप्त किया जाए? – dan
@ डैन: दुर्भाग्य से मैंने इस प्रश्न को पोस्ट करने के कुछ महीनों बाद रेल के साथ काम नहीं किया है, इसलिए मेरे पास कुछ भी नहीं है! – Ashe