Boolean型のチェックボックスの記事はあったけどプルダウンメニューのセレクトボックスが探してもなかったので備忘録。
真偽値なので0と1で値を送りたいけど、ユーザーが選択する部分では文字を表示したい。
探すとちょうどいい感じの記事が。
https://310nae.com/rails-selectbox/
new.html.erb
<%= form_with model:@post, local: true do |form| %>
<%= form.label "タイトル" %><%= form.text_area :title %>
<%= form.label "状態" %><%= form.select :is_released, [['非公開',0],['公開',1]], { include_blank: true, selected: 0 } %>
<%= form.submit "送信" %>
<% end %>
これで選択する際は「公開」「非公開」を選択できるようになり、paramsで送られてくる値は0か1になる。
表示するときはビューで切り替え。
index.html.erb
一覧表示
<% @posts.each do |post| %>
<div>
タイトル: <%= post.title %>
掲載状態:<%= post.is_released == true ? "公開" : "非公開" %>
<div>
<% end %>
もっときれいな書き方もあるのかも。
ちなみに真偽値はバリデーションかけるとき注意。(presence: trueにすると偽の場合保存できなくなる)
以下参照。
https://qiita.com/mktakuya/items/a13c2175f0f0d9871038