আমি রেলগুলি 3.2.0.rc2 ব্যবহার করছি । আমি একটি পেয়েছি Model, যার মধ্যে আমার একটি স্ট্যাটিক রয়েছে Arrayযা আমি একটি ফর্মের মাধ্যমে উপস্থাপন করছি যাতে ব্যবহারকারীরা একটি উপসেট নির্বাচন করতে পারে Arrayএবং একটি নির্বাচনী কলামে সঞ্চিত ডাটাবেসে তাদের নির্বাচন সংরক্ষণ করতে পারে Model। আমি ডাটাবেস কলামে সিরিয়ালাইজ ব্যবহার করেছি যা সঞ্চয় করে Arrayএবং রেলগুলি ব্যবহারকারীদের নির্বাচনকে ইয়ামলে সঠিকভাবে রূপান্তরিত করে (এবং সেই কলামটি পড়ার সময় একটি অ্যারেতে ফিরে আসে)। নির্বাচনগুলি করার জন্য আমি একটি বহু-নির্বাচিত ফর্ম ইনপুট ব্যবহার করছি।
আমার সমস্যাটি হ'ল, বর্তমানে যেভাবে আমার এটি রয়েছে, সার্ভারে প্রেরণ করা হলে ব্যবহারকারীর সাবসেট অ্যারে সর্বদা একটি ফাঁকা প্রথম উপাদান থাকে তা ছাড়া আমি প্রত্যাশা করি সবকিছুই কাজ করে।
এটি কোনও বড় বিষয় নয়, এবং বাস্তবের পরে এটি কেটে দেওয়ার জন্য আমি কোড লিখতে পারি, তবে আমার মনে হয় যে আমি কেবল একরকম সিন্ট্যাক্টিকাল ত্রুটি করছি কারণ এটি আমার কাছে মনে হয় না যে ডিফল্ট রেলস আচরণটি ইচ্ছাকৃতভাবে করবে me কোনও কারণ ছাড়াই এই ফাঁকা উপাদান যুক্ত করুন। আমি অবশ্যই কিছু মিস করেছি বা কোনও ধরণের সেটিংস অক্ষম করতে ভুলে গিয়েছি। আমি কী অনুপস্থিত তা বুঝতে আমাকে সহায়তা করুন (বা এমন কোনও ভাল ডকুমেন্টেশনে আমাকে ইঙ্গিত করুন যা এটি ইন্টার্টুবগুলিতে খুঁজে পেতে সক্ষম হয়েছি তার চেয়ে আরও গভীরতার সাথে এটি বর্ণনা করে)।
মাইএসকিউএল ডেটাবেস টেবিল 'মডেল':
- একটি কলামযুক্ত নাম অন্তর্ভুক্ত
subset_arrayযা একটি পাঠ্য ক্ষেত্র
ক্লাস মডেলটিতে নিম্নলিখিত সেটিংস অন্তর্ভুক্ত রয়েছে:
serialize :subset_arrayALL_POSSIBLE_VALUES = [value1, value2, value3, ...]
মডেলগুলি সম্পাদনার জন্য ফর্মটিতে নিম্নলিখিত ইনপুট বিকল্পটি অন্তর্ভুক্ত করা হয়েছে:
f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array
ক্লায়েন্ট থেকে সার্ভারে পুট দেখতে এরকম কিছু দেখাচ্ছে:
- কেবল মান 1 এবং মান 3 নির্বাচন করা হয়েছে বলে ধরে নেওয়া হচ্ছে
"model" => { "subset_array" => ["", value1, value3] }
ডাটাবেস আপডেটটি দেখে মনে হচ্ছে:
UPDATE 'models' SET 'subset_array' = '--- \n- \"\"\n- value1\n- value3\n'
আপনি দেখতে পাচ্ছেন, অ্যারেতে এই অতিরিক্ত, ফাঁকা, উপাদান রয়েছে এবং এটি ডাটাবেসে সেট করা হচ্ছে। আমি কীভাবে এ থেকে মুক্তি পাব? আমি আমার f.selectকল থেকে অনুপস্থিত একটি প্যারামিটার আছে ?
অনেক ধন্যবাদ প্রশংসা :)
সম্পাদনা : এটি 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তৈরি করতে পারবেন? এছাড়াও, তৈরি করতে এমনকি এই আচরণটি ঘটে, বা এটি কেবল আপডেটে হয়?