2016-11-29 9 views
7

गिरा दिया जाता है, जब नियंत्रक पैरामीटर है कि इस तरह दिखना भेजने मैं समस्या आ रही है:रेल 5 पैरामीटर

{ id: "1", stuff: {"A" => [], "B" => [], "C" => [], "D" => []} } 

विधि केवल { id: "1" } देखता है और पूरे stuff पैरामीटर हटा दिया गया है ।

यदि सरणी में कोई मान हैं तो इसे बदला जा सकता है। लेकिन कहते हैं कि वहाँ छोड़कर कुंजी "C" के लिए, वे सब "C" तरह के अलावा होगी सभी सरणियों में मानों हैं:

{ id: "1", stuff: {"A" => ["1"], "B" => ["2", "3"], "D" => ["4"]} } 

मैं रेल 4.2.x से इस समस्या को उन्नयन में पड़ने कर रहा हूँ -> 5.0.0 यहां क्या हो रहा है पर कोई सुझाव? मैंने munging parameters के आस-पास कुछ लेख/मुद्दे देखे हैं, लेकिन मुझे यकीन नहीं है कि यह मुद्दा है क्योंकि उनकी उदाहरण तालिका में कैसे मंगिंग काम करता है {person: []}{person: nil} बन जाता है, जहां व्यक्ति परम पूरी तरह से नहीं छोड़ा जाता है।

उत्तर

6
जी एच समुदाय में @sgrif से

:

यह अपेक्षित व्यवहार है। एक HTML फॉर्म (उदा। सामग्री-प्रकार: यूआरएल-फॉर्म-एन्कोडेड) का उपयोग कर खाली सरणी को एन्कोड करने का कोई तरीका नहीं है। रेलवे 4.2 में आपके परीक्षणों का कारण बनने का कारण है क्योंकि नियंत्रक परीक्षण उनके पैरामीटर को एन्कोड नहीं करते हैं, इसलिए उन्होंने सीधे हैश को के माध्यम से सीधे पास कर दिया है। रेल 5 में यह उन्हें एन्कोड करता है। यदि आपका नियंत्रक रिक्त सरणी की परवाह करता है, तो संभव है कि आप JSON अनुरोधों से निपट रहे हों। आप अपने परीक्षण में ऐसा कर सकते हैं:: json। यदि आप बस फ़ॉर्म इनपुट से निपट रहे हैं, तो आपको कभी भी खाली सरणी नहीं मिलेगी।

as: :json जोड़ा जा रहा है मेरे लिए काम खत्म नहीं हुई है, लेकिन का परीक्षण किया शुरुआत में @request.headers["Content-Type"] = 'application/json' जोड़ने।

+0

धन्यवाद, हेडर ट्विक मेरे लिए भी चाल है। क्या हमारे पास कोई सुराग है क्यों:: जेसन समाधान काम नहीं कर रहा है? – Andrew

+0

मैंने उसमें किसी और को खेद नहीं किया, क्षमा करें। – Luke

+0

इसे साझा करने के लिए धन्यवाद! –

संबंधित मुद्दे