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