Rail enumで2択のデータを保存する方法(integer型)
概要
こんにちは。
個人アプリの作成過程でラジオボタンで2択のデータを保存する機能を実装したので、残しておきます。
今回はMaterializeを使用しています。
こんな感じです。
手順
- integer型でカラムを作成
- モデルにenumを記述
- view側に記述
integer型でカラムを作成
ポートフォリオでカフェを投稿するアプリを作成したので今回は
wifiカラムをinteger型で作成します。
def change
add_column :shops, :wifi, :integer
end
モデルにenumを記述
enum wifi: { yes: 1, no: 2 }
コンソールでは
pry(main)> @shop.wifi = 1
=> 1
pry(main)> @shop.wifi
=> "yes"
このようにenumに設定したvalueが出力されます。
viewに記述
form_forでラジオボタンからデータを送ります。
<%= form_for(@shop) do |f| %>
<%= f.radio_button :wifi, :yes %> # チェックすると1が入る
<%= f.radio_button :wifi, :no %> # チェックすると2が入る
<% end %>
私はmateriarizeで実装したのでこんな感じになりました。
<%= form_for(@shop) do |f| %>
<div class="col s12 radio_col">
<label>
<span class="list">Wifi</span>
<i class="material-icons small">wifi</i>
<%= f.radio_button :wifi, :yes, class: "with-gap"%>
<span>有</span>
</label>
<label>
<%= f.radio_button :wifi, :no, class: "with-gap"%>
<span>無</span>
</label>
</div>
<% end %>
表示は
<% @shop.wifi %>
valueが1なら
"yes"
valueが2なら
"no"
と表示される
if文では
<% if shop.wifi == "yes" %>
と書く
== 1ではfalseになってしまいました。
また,enum時点で文字列でも設定できるみたいです!
次回はJqueryで選択解除する方法をあげたいとおもいます!
Author And Source
この問題について(Rail enumで2択のデータを保存する方法(integer型)), 我々は、より多くの情報をここで見つけました https://qiita.com/matsutech/items/54adc51b9ee18a9be628著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .