J'utilise les enums dans Rails 4.1 pour garder une trace des couleurs du vin.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
À mon avis, je génère une sélection pour que l'utilisateur puisse sélectionner un vin avec une certaine couleur
f.input :color, :as => :select, :collection => Wine.colors
Cela génère le HTML suivant:
<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>
Cependant, lors de la soumission du formulaire, je reçois une erreur d'argument indiquant '1' is not a valid color
. Je me rends compte que c'est parce qu'il color
faut égaler 1
et non "1"
.
Existe-t-il un moyen de forcer Rails à interpréter la couleur comme un entier plutôt que comme une chaîne?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
carw
représentait un tableau. Je ne sais pas pourquoi, mais peut-être que cela aidera quelqu'un.