2012-01-08 2 views
0

Я признаю, что я немного в тупике, так как я занимаюсь рельсами в течение некоторого времени , Я пытаюсь получить массив значений в 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 значений, разделенных запятыми.

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

+0

Я просмотрел http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag#691-sending-an-array-of-multiple-options и согласился с тем, что ваш результат выглядит правильно. Я даже попробовал его на проекте Rails 2.3.11, и он работал так, как вы ожидаете. Работает ли он в версии 2.3.8, если вы просто делаете какое-то дерьмо в том виде, который представлен на apidock? –

+0

коррекция, я на 2.3.5 не 2.3.8. я фактически выполнил трассировку стека до ActionController :: Dispatcher.call(), а params ['show'] имеет указанное выше значение даже в этой точке вызова. –

ответ

0

Парамеры анализируются Rack::Request и Rack::Utils. Вы должны взглянуть на классы this. Помните, что ссылка не обязательно указывает на версию Rack, которую вы используете.

Смежные вопросы