Inclure le champ vide pour le premier élément dans la liste de sélection dans la balise options_for_select

J’ai essayé :include_blank => true , mais ça n’a pas fonctionné.

    

Si je dois l’append à la collection, comment feriez-vous cela?

Je pense que vous voulez ce format:

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

BTW: supposait que Modle était supposé être Model. Pour utiliser avec collection_select:

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

Je crois que les options :include_blank n’existent que pour select champs liés à un modèle.

En supposant que vous souhaitiez utiliser une au lieu de <%= select(...) %> liée à un modèle, vous pouvez insérer une entrée vide au début de vos résultats:

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

Comme vous avez balisé en tant que tag-select, vous pouvez utiliser l’option include_blank avec select_tag .

De la documentation:

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

Ou vous pouvez utiliser 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]) 

Si vous voulez une solution rearmed_rails vous pouvez utiliser mon gem rearmed_rails qui a une fonctionnalité qui permet de rearmed_rails en toute sécurité les patches options_for_select et options_for_collection_select

rails g rearmed_rails:setup

Ouvrez config/initializers/rearmed_rails.rb et remplacez les valeurs suivantes par true

 options_for_select_include_blank: true, options_from_collection_for_select_include_blank: true 

Maintenant, chaque fois que vous avez besoin d’un espace vide, procédez comme suit:

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