Я пробовал :include_blank => true
, но это не сработало.
<select>
<%= options_for_select Model.all.collect{|mt| [mt.name, mt.id]} %>
</select>
Если мне нужно добавить его в коллекцию, как бы вы это сделали?
Я пробовал :include_blank => true
, но это не сработало.
<select>
<%= options_for_select Model.all.collect{|mt| [mt.name, mt.id]} %>
</select>
Если мне нужно добавить его в коллекцию, как бы вы это сделали?
Я думаю, что вы хотите этот формат:
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)
Я считаю, что параметры :include_blank
существуют только для полей select
, привязанных к модели.
Предполагая, что вы хотите использовать простой тег <select>
вместо привязанного к модели <%= select(...) %>
, вы можете вставить пустую запись в начале своих результатов:
<%= options_for_select Modle.all.collect{|mt| [mt.name, mt.id]}.insert(0, "") %>
Поскольку вы отметили как 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 %>
<%= options_for_select Model.all.collect{|x| [x.name,x.id]}.unshift(["",nil]) %>
= 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])
Если вы хотите использовать гладкое решение, вы можете использовать мой драгоценный камень 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) %>