возникли проблемы с пониманием :multiple =› true в флажке

Я очень новичок в Ruby on Rails, я унаследовал контроль над веб-базой данных Ruby/Rails (созданной другим) для создания и отслеживания инженерных функций. Я использую Aptana IDE.

Моя проблема в том, что я пытаюсь использовать помощник формы для выбора нескольких значений для наших «линий продуктов». Я использую 10 флажков и получаю правильный вывод одного значения, если не использую «:multiple => true».

Смотрите выходное изображение:

без множественного выбора

работает по назначению

<%= f.check_box :product_line, {:class => "field"}, "A9", false %> A9

(10 раз с разными значениями, где «A9», так что всего десять флажков, на изображении показан флажок «A7»)

Если просто добавить :multiple => true, вывод изменится, как показано на изображении ниже:

см. выходное изображение:

множественный выбор

возвращает слишком много

<%= f.check_box :product_line, {:class => "field", :multiple => true}, "A9", false %> A9

Почему все эти «-» добавляются перед выводом только в том случае, если сделан множественный выбор? Я хочу, чтобы он возвращал только значения флажка, разделенные запятыми, то есть "A9, A7"

PRODUCT_LINES = [ "A9", "A7", "AG", "AF", "S3", "Legacy", "K/Kpro", "EMW", "HD", "Non-Metallic" ]

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


person JCM    schedule 04.11.2015    source источник
comment
Я приветствую твоего страстного брата. Вы занимаетесь разработкой Rails на компьютере с Windows.   -  person Arslan Ali    schedule 04.11.2015


Ответы (1)


Почему все эти «-» добавляются перед выводом только в том случае, если сделан множественный выбор?

Из документов (ознакомьтесь с советом), если для параметра Multiple установлено значение true все выборы будут храниться в массиве product_lines, но невыбранные check_boxes также будут зарезервированы как пустые строки в отправленных параметрах, поэтому результат, который вы видите, product_lines будет примерно таким:

product_lines = ["", "", "", "A9", "A7"]

Могу ли я перебрать массив :product_line, чтобы вместо этого получить то, что я ищу?

Что ж, на самом деле это подводит нас прямо к проблеме использования multiple: true в вашем коде.

Процесс, описанный в (1) выше, представляет собой то, как был разработан тег check_box_tag, проблема, которую вы видите, связана с презентацией, вероятно, в вашем ECN#show. Без просмотра кода я только догадываюсь, но обычно это что-то вроде:

<%= @ecn.product_lines.join('-') %>

что должно быть

<%= @ecn.product_lines.reject(&:blank?).join(',') %>

где: reject(&:blank?) чтобы избавиться от пустых строк, а затем соединить запятыми по мере необходимости

Надеюсь, это поможет!

person Nimir    schedule 04.11.2015