我使用Rails 4.1中的枚举来跟踪葡萄酒的颜色。
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
在我看来,我会生成一个选择,以便用户可以选择某种颜色的葡萄酒
f.input :color, :as => :select, :collection => Wine.colors
这将生成以下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>
但是,提交表单后,我收到了一个说明的参数错误'1' is not a valid color
。我意识到这是因为color
必须平等1
而不是平等"1"
。
有没有一种方法可以迫使Rails将颜色解释为整数而不是字符串?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
因为它w
代表一个数组。不知道为什么,但这也许会帮助某人。