Sto usando le enumerazioni in Rails 4.1 per tenere traccia dei colori del vino.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
A mio avviso, creo una selezione in modo che l'utente possa selezionare un vino con un certo colore
f.input :color, :as => :select, :collection => Wine.colors
Questo genera il seguente codice HTML:
<select id="wine_color" name="wine[color]">
<option value=""></option>
<option value="0">red</option>
<option value="1">white</option>
<option value="2">sparkling</option>
</select>
Tuttavia, dopo aver inviato il modulo, ricevo un messaggio di errore di argomento '1' is not a valid color
. Mi rendo conto che questo è perché color
deve essere uguale 1
e non "1"
.
C'è un modo per forzare Rails a interpretare il colore come un intero invece che come una stringa?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
perchéw
rappresentava un array. Non sono sicuro del perché, ma forse questo aiuterà qualcuno.