Ich verwende die Aufzählungen in Rails 4.1, um die Farben des Weins zu verfolgen.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
Aus meiner Sicht generiere ich eine Auswahl, damit der Benutzer einen Wein mit einer bestimmten Farbe auswählen kann
f.input :color, :as => :select, :collection => Wine.colors
Dies generiert den folgenden HTML-Code:
<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>
Beim Absenden des Formulars erhalte ich jedoch einen Argumentationsfehler '1' is not a valid color
. Mir ist klar, dass dies daran liegt, dass color
es gleich sein muss 1
und nicht "1"
.
Gibt es eine Möglichkeit, Rails zu zwingen, die Farbe als Ganzzahl und nicht als Zeichenfolge zu interpretieren?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
weil esw
ein Array darstellte. Ich weiß nicht warum, aber vielleicht hilft das jemandem.