Tôi đang sử dụng enums trong Rails 4.1 để theo dõi màu sắc của rượu.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
Theo quan điểm của tôi, tôi tạo một lựa chọn để người dùng có thể chọn một loại rượu có màu nhất định
f.input :color, :as => :select, :collection => Wine.colors
Điều này tạo ra HTML sau:
<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>
Tuy nhiên, khi gửi biểu mẫu, tôi nhận được lỗi đối số nêu rõ '1' is not a valid color
. Tôi nhận ra điều này là bởi vì color
phải bằng 1
và không"1"
.
Có cách nào để buộc Rails giải thích màu dưới dạng số nguyên chứ không phải là chuỗi không?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
vìw
đại diện cho một mảng. Không chắc tại sao, nhưng có thể điều này sẽ giúp ích cho ai đó.