Почему первый элемент всегда пуст в моем множественном выборе Rails, используя встроенный массив?

я используюRails 3.2.0.rc2, у меня естьModelв котором у меня есть статикаArray который я предлагаю через форму, так что пользователи могут выбрать подмножествоArray и сохранить их выбор в базе данных, хранящейся в одном столбце вModel, Я использовал сериализацию в столбце базы данных, которая хранитArray и Rails правильно преобразует выборки пользователей в Yaml (и обратно в массив при чтении этого столбца). Я использую множественный выбор формы, чтобы сделать выбор.

Моя проблема в том, что, как у меня сейчас, все работает так, как я и ожидал, за исключением того, что массив поднаборов пользователя всегда имеет пустой первый элемент при отправке на сервер.

Это не имеет большого значения, и я мог бы написать код, чтобы исключить это после факта, но я чувствую, что просто делаю какую-то синтаксическую ошибку, так как мне не кажется, что поведение Rails по умолчанию намеренно будет добавить этот пустой элемент без какой-либо причины. Должно быть, я что-то пропустил или забыл отключить какую-то настройку. Пожалуйста, помогите мне понять, что я упускаю (или укажите мне какую-нибудь хорошую документацию, которая описывает это более подробно, чем то, что я смог найти в промежутках).

Таблица моделей базы данных MySQL:включает в себя столбец с именемsubset_array который является текстовым полемМодель класса включает в себя следующие настройки:serialize :subset_arrayALL_POSSIBLE_VALUES = [value1, value2, value3, ...]Форма для редактирования моделей включает следующую опцию ввода:f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_arrayPUT на сервер от клиента выглядит примерно так:при условии, что выбраны только 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>

Ответы на вопрос(9)

Ваш ответ на вопрос