Şarap renklerini takip etmek için Rails 4.1'deki numaralandırmaları kullanıyorum.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
Benim görüşüme göre, kullanıcının belirli bir renge sahip bir şarap seçebilmesi için bir seçim oluşturuyorum
f.input :color, :as => :select, :collection => Wine.colors
Bu, aşağıdaki HTML'yi oluşturur:
<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>
Bununla birlikte, formu gönderdikten sonra, belirten bir argüman hatası alıyorum '1' is not a valid color
. Bunun color
eşit olması 1
ve olmaması gerektiğinin farkındayım "1"
.
Rails'i rengi bir dizeden ziyade tam sayı olarak yorumlamaya zorlamanın bir yolu var mı?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
çünküw
bir diziyi temsil ediyordu. Neden olduğundan emin değilim, ama belki bu birine yardımcı olur.