Я використовую переліки в Rails 4.1, щоб відстежувати кольори вина.
Вино.рб
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
являв собою масив. Не знаю чому, але, можливо, це комусь допоможе.