[解決済み] Rails 4.1でのselectからのenumの保存
2022-08-30 21:26:37
質問
Rails 4.1のenumを使って、ワインの色を記録しています。
ワイン.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が色を文字列ではなく、整数として解釈するように強制する方法はありますか?
どのように解決するのですか?
どうやら、保存するenumの整数値を送ってはいけないようです。enumのtext値を送ればいいのです。
という入力に変更しました。
f.input :color, :as => :select, :collection => Wine.colors.keys.to_a
となり、以下のようなHTMLが生成されました。
<select id="wine_color" name="wine[color]">
<option value=""></option>
<option value="red">red</option>
<option value="white">white</option>
<option value="sparkling">sparkling</option>
</select>
値は "0" から "red" になり、これで準備は整いました。
普通のrailsのtext_fieldを使っている場合はそうなります。
f.select :color, Wine.colors.keys.to_a
もし、人間が読めるきれいな属性を持ちたいのであれば、それも可能です。
f.select :color, Wine.colors.keys.map { |w| [w.humanize, w] }
関連
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] RubyとRailsの "Date.today "フォーマット