Rails 4.1の列挙型を使用して、ワインの色を追跡しています。
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
私の見解では、ユーザーが特定の色のワインを選択できるように、selectを生成します
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
。理由は不明ですが、これは誰かを助けるでしょう。