मैं रेल का उपयोग कर रहा हूँ 3.2.0.rc2 । मुझे एक मिला है Model
, जिसमें मेरे पास एक स्टेटिक है Array
जिसे मैं एक ऐसे फॉर्म के माध्यम से पेश कर रहा हूं, जिसमें उपयोगकर्ता एक सबसेट का चयन कर सकते हैं Array
और अपने चयन को डेटाबेस में सहेज सकते हैं, जिसे एक कॉलम में संग्रहीत किया गया है Model
। मैंने डेटाबेस कॉलम पर क्रमबद्ध उपयोग किया है जो स्टोर करता है Array
और रेल सही ढंग से उपयोगकर्ताओं के चयन को यमल (और उस कॉलम को पढ़ते समय एक सरणी में वापस) में परिवर्तित कर रहा है। मैं चयन करने के लिए एक बहु-चयन फ़ॉर्म इनपुट का उपयोग कर रहा हूं।
मेरी समस्या यह है कि, जिस तरह से मेरे पास वर्तमान में है, वह सब कुछ काम करता है जैसा कि मैं अपेक्षा करता हूं कि उपयोगकर्ता के सबसेट एरे में हमेशा एक खाली पहला तत्व होता है जब इसे सर्वर पर भेजा जाता है।
यह कोई बड़ी बात नहीं है, और मैं इस तथ्य के बाद इसे काटने के लिए कोड लिख सकता हूं, लेकिन मुझे ऐसा लगता है कि मैं बस किसी प्रकार की वाक्यविन्यास त्रुटि कर रहा हूं क्योंकि यह मुझे ऐसा नहीं लगता कि डिफ़ॉल्ट रूप से रेल व्यवहार जानबूझकर होता है। बिना किसी कारण के इस रिक्त तत्व को जोड़ें। मुझे कुछ याद नहीं होगा या कुछ प्रकार की सेटिंग को अक्षम करना भूल गया। कृपया मुझे यह समझने में मदद करें कि मैं क्या याद कर रहा हूँ (या मुझे कुछ अच्छे दस्तावेज़ों की ओर इशारा करता हूँ जो इस बात का वर्णन करता है कि मैं इंटरब्यूटेस पर क्या पाया है, उससे कहीं अधिक गहराई के साथ)।
MySQL डाटाबेस टेबल 'मॉडल':
- एक स्तंभ शामिल है जिसका नाम
subset_array
TEXT फ़ील्ड है
क्लास मॉडल में निम्नलिखित सेटिंग्स शामिल हैं:
serialize :subset_array
ALL_POSSIBLE_VALUES = [value1, value2, value3, ...]
संपादन के लिए मॉडल में निम्नलिखित इनपुट विकल्प शामिल हैं:
f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array
क्लाइंट से सर्वर पर PUT कुछ इस तरह दिखता है:
- केवल मान 1 और मान 3 का चयन किया जाता है
"model" => { "subset_array" => ["", value1, value3] }
डेटाबेस अद्यतन इस तरह दिखता है:
UPDATE 'models' SET 'subset_array' = '--- \n- \"\"\n- value1\n- value3\n'
जैसा कि आप देख सकते हैं, इस अतिरिक्त, रिक्त, सरणी में तत्व भेजा जा रहा है और डेटाबेस में सेट किया गया है। मैं उससे कैसे छुटकारा पाऊं? क्या कोई पैरामीटर है जो मुझे अपने f.select
कॉल से याद आ रहा है ?
बहुत धन्यवाद की सराहना की :)
EDIT : यह f.select
कथन से उत्पन्न HTML कोड है । ऐसा लगता है कि जैसे कोई गुप्त इनपुट उत्पन्न हो रहा है, जो मेरे मुद्दे का कारण हो सकता है? ऐसा क्यों है?
<input name="model[subset_array][]" type="hidden" value>
<select id="model_subset_array" multiple="multiple" name="model[subset_array][]" selected="selected">
<option value="value1" selected="selected">Value1</option>
<option value="value2">Value2</option>
<option value="value3" selected="selected">Value3</option>
<option...>...</option>
</select>
f.select
उत्पन्न कर रहा है? इसके अलावा, क्या यह व्यवहार बनाने पर भी होता है, या यह सिर्फ अपडेट पर है?