2013-09-06 3 views
5

Hilf mir bitte, das Problem mit collection_select zu lösen. Wenn ich benutze:Rails collection_Set-Wert für include_blank auswählen

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

HTML ist:

<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> 

Aber ich brauche value = "0" für "Any" -Option. Ist es möglich?

Update:

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

hat mir geholfen, aber es gibt NE-Norf? Oder ich verstehe etwas falsch?

+0

Was passiert, wenn Sie '[0, 'Any']' übergeben? –

+3

Aber ich denke, es macht keinen Sinn. Sieht so aus, als würden Sie nach dem Wert DEFAULT fragen, der nicht leer ist. Leer ist definitionsgemäß ein Wert, der 'Anwesenheitsüberprüfung' fehlschlägt. –

+0

@MichaelSzyndel, was du gesagt hast, ist korrekt, aber kann er wirklich jeden Datensatz mit der ID '0' finden? Denn definitiv ist diese Auswahl Teil einer Form. Also, was ist der Punkt der Eingabe von '0' in einem ID carmake_id Feld. –

Antwort

9

Dies könnte funktionieren:

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

Obwohl ich Speichern/Aktualisieren nicht Aktion testen haben.

Verwandte Themen