Estou usando os enums no Rails 4.1 para controlar as cores do vinho.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
Na minha opinião, eu gero um select para que o usuário possa selecionar um vinho com uma determinada cor
f.input :color, :as => :select, :collection => Wine.colors
Isso gera o seguinte 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>
No entanto, ao enviar o formulário, recebo um erro de argumento informando '1' is not a valid color
. Eu percebo que isso é porque color
deve ser igual 1
e não "1"
.
Existe uma maneira de forçar o Rails a interpretar a cor como um inteiro ao invés de uma string?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
porquew
representava uma matriz. Não sei por que, mas talvez isso ajude alguém.