2013-09-06 16 views
5

Aiutami a risolvere il problema con collection_select. Quando uso:Rails collection_select valore impostato per include_blank

collection_select(:service, :carmake_id, Carmake.all, :id, :name, include_blank: 'Any') 

HTML è:

<select id="service_carmake_id" name="service[carmake_id]"> 
    <option value="">Any</option> 
    <option value="12">Audi</option> 
    <option value="16">Porsche</option> 
    <option value="17">VW</option> 
</select> 

ma ho bisogno value = "0" per "qualsiasi" opzione. È possibile?

Aggiornamento:

select(:service, :carmake_id, [['Any', 0]] + Carmake.all.collect { |p| [p.name, p.id]}) 

mi ha aiutato, ma non v'è railsway? O ho frainteso qualcosa?

+0

Cosa succede se si passa '[0, 'Qualsiasi']'? –

+3

Ma penso che non ha senso. Sembra che tu stia chiedendo il valore DEFAULT non vuoto. Vuoto per definizione è un valore che fallirà il controllo di 'presenza' –

+0

@MichaelSzyndel quello che hai detto è corretto, ma è davvero in grado di trovare qualsiasi record con id '0'. Perché sicuramente questa selezione fa parte di una qualche forma. Quindi, ecco il punto di inserire '0' in qualsiasi campo id carmake_id. –

risposta

9

Questo potrebbe funzionare:

options = Carmake.all.unshift Carmake.new(id: 0, name: 'Any') 
collection_select(:service, :carmake_id, options, :id, :name, include_blank: 'Any') 

Anche se non ho la prova salvataggio/aggiornamento in azione.

Problemi correlati