Почему первый элемент всегда пуст в моем множественном выборе Rails, используя встроенный массив?
я используюRails 3.2.0.rc2, у меня естьModel
в котором у меня есть статикаArray
который я предлагаю через форму, так что пользователи могут выбрать подмножествоArray
и сохранить их выбор в базе данных, хранящейся в одном столбце вModel
, Я использовал сериализацию в столбце базы данных, которая хранитArray
и Rails правильно преобразует выборки пользователей в Yaml (и обратно в массив при чтении этого столбца). Я использую множественный выбор формы, чтобы сделать выбор.
Моя проблема в том, что, как у меня сейчас, все работает так, как я и ожидал, за исключением того, что массив поднаборов пользователя всегда имеет пустой первый элемент при отправке на сервер.
Это не имеет большого значения, и я мог бы написать код, чтобы исключить это после факта, но я чувствую, что просто делаю какую-то синтаксическую ошибку, так как мне не кажется, что поведение Rails по умолчанию намеренно будет добавить этот пустой элемент без какой-либо причины. Должно быть, я что-то пропустил или забыл отключить какую-то настройку. Пожалуйста, помогите мне понять, что я упускаю (или укажите мне какую-нибудь хорошую документацию, которая описывает это более подробно, чем то, что я смог найти в промежутках).
Таблица моделей базы данных MySQL:включает в себя столбец с именемsubset_array
который является текстовым полемМодель класса включает в себя следующие настройки:serialize :subset_array
ALL_POSSIBLE_VALUES = [value1, value2, value3, ...]
Форма для редактирования моделей включает следующую опцию ввода:f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array
PUT на сервер от клиента выглядит примерно так:при условии, что выбраны только value1 и value3"model" => { "subset_array" => ["", value1, value3] }
Обновление базы данных выглядит так:UPDATE 'models' SET 'subset_array' = '--- \n- \"\"\n- value1\n- value3\n'
Как вы можете видеть, этот дополнительный пустой элемент в массиве отправляется и устанавливается в базу данных. Как мне избавиться от этого? Есть ли параметр, который я пропускаю из моегоf.select
вызов?
Большое спасибо, оценили :)
РЕДАКТИРОВАТЬ: Это сгенерированный HTML-код изf.select
заявление. Похоже, что создается скрытый ввод, который может быть причиной моей проблемы? Почему это там?
<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>