Saya menggunakan enum di Rails 4.1 untuk melacak warna anggur.
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
Dalam pandangan saya, saya menghasilkan pilihan sehingga pengguna dapat memilih anggur dengan warna tertentu
f.input :color, :as => :select, :collection => Wine.colors
Ini menghasilkan HTML berikut:
<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>
Namun, setelah mengirimkan formulir, saya menerima kesalahan argumen yang menyatakan '1' is not a valid color
. Saya menyadari ini karena color
harus sama 1
dan tidak "1"
.
Apakah ada cara untuk memaksa Rails menafsirkan warna sebagai bilangan bulat daripada string?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
karenaw
mewakili sebuah array. Tidak yakin mengapa, tapi mungkin ini akan membantu seseorang.