ฉันใช้ enums ใน 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
เป็นตัวแทนของอาร์เรย์ ไม่แน่ใจว่าทำไม แต่อาจจะช่วยใครบางคนได้