Добавьте класс к каждому варианту выбора с помощью SimpleForm

Я хочу построить select входные данные из массива (а не из коллекции моделей), с SimpleForm, и имеют разные классы для каждого options.

Я бы надеялся, что это сработает:

f.input :method, collection: [
    ["option text", "option_value_1", { class: "class_name_1" }],
    ["option text 2", "option_value_2", { class: "class_name_2" }]
]

Проблема в том, что он будет генерировать:

<select>
    <option value="option text" class="class_name_1">option text</option>
    <option value="option text 2" class="class_name_2">option text 2</option>
</select>

Как я могу сделать то, что я хочу (значение должно быть "значение параметра") с простой формой?

1 ответ

Решение

Это кажется ограничением при использовании коллекций, см. Здесь объяснение автора SimpleForm. Он рекомендует обходной путь формы:

f.input :method, :as => :select do
  f.select :method, [['option text', 'option_value_1', {"class" => "class_name_1"}], ['option text 2', 'option_value_2', {"class" => "class_name_2"}]]
end

Вы также можете передать массив массивов в качестве аргумента

= f.input :status, collection: [['option text', 'option_value_1', {"class" => "class_name_1"}], ['option text 2', 'option_value_2', {"class" => "class_name_2"}]]
Другие вопросы по тегам