2012-05-04 26 views
6

Estoy usando un campo collection_select, pero necesito preceder las opciones con alguna predeterminada, que no representa un registro de modelo en particular y se usa para establecer el campo appropriet en NULL. Pero no puedo encontrar ninguna manera de hacer eso.Rails: Agregar opciones a collection_select

Si necesita más información, no se apresure a preguntar. Usando Rails 3.2.3 con ayudantes de formulario estándar.

P.S. Sé que puedo hacer algo como esto:

@parents = ['default_name','nil'] 
@parents << Model.all.map {|item| [item.name,item.id]} 

Pero creo que hay una manera más elegante.

Respuesta

15

Hay un: opción include_blank que puede pasar a collection_select método de ayuda:

f.collection_select(:author_id, Author.all, :id, :name_with_initial, 
        :include_blank => "Nothing selected") 

También hay una opción similar llamado: prompt, compruébalo también.

+1

Muchas gracias. No noté ese param. Se verá mejor – Almaron

+0

La combinación de ': prompt' y': include_blank' está realmente limpia, en lugar de un 'select' personalizado. Gracias –

1

¿Algo como esto es aceptable en su opinión?

collection_select :field1, :field2, @models+[Model.new(name: "default_name")], :name, :id 
10

Puede probable que el uso seleccione lugar:

f.select(:item_id, @items.collect {|p| [ p.name, p.id ] } + ['Or create a new one like','new'], {:include_blank => 'Please select a item'}) 
+0

Esto era justo lo que necesitaba, ¡GRACIAS! – Thomas

Cuestiones relacionadas