Я признаю, что я немного в тупике, так как я занимаюсь рельсами в течение некоторого времени , Я пытаюсь получить массив значений в params[]
из набора со списком множественного выбора.Rails 2.3.8 множественный выбор не возвращающий массив, даже с <select name = 'foo []' multiple = 'multiple'>
Это рельсы 2.3.5 и рубин 1.8.6 (я знаю, я знаю).
Сгенерированный HTML является:
<select id="shows_" multiple="multiple" name="shows[]">
<option value="5">A Grand Night For Singing (Jan - Feb 2007)</option>
<option value="6">Who's Afraid of Virginia Woolf? (Mar - Apr 2007)</option>
...more options...
</select>
Обратите внимание, что имя тега выбора кнопки заканчивается «[]» и параметр «множественного» устанавливаются. Если установить отладочный контрольную точку в верхней части контроллера действий и посмотреть на params[:shows]
:
(rdb:62) p params[:shows]
["17,18,19"]
Захваченные значения являются правильными, но я ожидал ["17","18","19"]
, И.Е. массив из N элементов, а не массив одного элемента, состоящего из N значений, разделенных запятыми.
Я мог бы легко создать код вокруг этого, но я сбитый с толку, так как я уверен, что это работало, и поведение, которое я ожидаю, - это документированное поведение. Есть идеи?
Я просмотрел http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag#691-sending-an-array-of-multiple-options и согласился с тем, что ваш результат выглядит правильно. Я даже попробовал его на проекте Rails 2.3.11, и он работал так, как вы ожидаете. Работает ли он в версии 2.3.8, если вы просто делаете какое-то дерьмо в том виде, который представлен на apidock? –
коррекция, я на 2.3.5 не 2.3.8. я фактически выполнил трассировку стека до ActionController :: Dispatcher.call(), а params ['show'] имеет указанное выше значение даже в этой точке вызова. –