Подтвердить что ты не робот

Включить пробел для первого элемента в списке выбора в элементе options_for_select

Я пробовал :include_blank => true, но это не сработало.

<select>
    <%= options_for_select Model.all.collect{|mt| [mt.name, mt.id]} %>
</select>

Если мне нужно добавить его в коллекцию, как бы вы это сделали?

4b9b3361

Ответ 1

Я думаю, что вы хотите этот формат:

select("model_name", "model_id", Model.all.collect {|mt| [ mt.name, mt.id ] }, {:include_blank => 'name of your blank prompt'})

BTW: предполагал, что Modle должен был быть моделью. Использовать с помощью collection_select:

collection_select(:model, :model_id, Model.all, :id, :name, :prompt => true)

Ответ 2

Я считаю, что параметры :include_blank существуют только для полей select, привязанных к модели.

Предполагая, что вы хотите использовать простой тег <select> вместо привязанного к модели <%= select(...) %>, вы можете вставить пустую запись в начале своих результатов:

<%= options_for_select Modle.all.collect{|mt| [mt.name, mt.id]}.insert(0, "") %>

Ответ 3

Поскольку вы отметили как select-tag, вы можете использовать опцию include_blank с select_tag.

Из документации:

select_tag "people", options_from_collection_for_select(@people, "id", "name"), :include_blank => true

# => <select id="people" name="people"><option value=""></option><option value="1">David</option></select>

Или вы можете использовать options_for_select:

<%= select_tag column.name, options_for_select(Model.all.collect{|mt| [mt.name, mt.id]}), :include_blank => true %>

Ответ 4

<%= options_for_select Model.all.collect{|x| [x.name,x.id]}.unshift(["",nil]) %>

Ответ 5

= select_tag "some_value", options_for_select(Model.all.collect{ |x| [x.name, x.id]}.prepend([t('helpers.some_name'), nil]), :selected => params[:some_value])

Ответ 6

Если вы хотите использовать гладкое решение, вы можете использовать мой драгоценный камень rearmed_rails, в котором есть функция, в которой безопасно патчи обезьяны options_for_select и options_for_collection_select

rails g rearmed_rails:setup

Откройте config/initializers/rearmed_rails.rb и измените следующие значения на true

options_for_select_include_blank: true,
options_from_collection_for_select_include_blank: true


Теперь, когда вам нужен пустой пробел, просто выполните следующие действия:

<%= options_for_select(Model.all.map{|x| [x.name,x.id]}, include_blank: true) %>