🐈
プルダウン・ドロップダウンの表示の仕方
🍍自分で登録したものをプルダウン表示させたいとき
今回は商品のジャンル登録を自分で行えて、商品登録時に自分で登録したジャンルがプルダウン表示され選択できるようにする。
完成形
<%= f.collection_select(:genre_id, Genre.all, :id, :name, include_blank: "選択して下さい" ) %>
解説
参考
🍍enumで指定したものをプルダウン表示したいとき
とりあえず調べて上の記事がでてき来たので習って同じように記述してみた。
orders/show.html.erb
<%= form_with model:@order, url: admin_order_path, method: :patch do |f| %>
<%= f.select :status, Order.statuses.keys.map {|k|[I18n.t("enums.order.status.#{k}"), k]} %>
<%= f.submit '更新' %>
<% end %>
何がなんだか全然理解できません😢🙉
とりあえずこの記述のまま画面表示させてみると
このように表示されました。
事前に英語→日本語にできるように設定はしているのでその部分の記述はいらないみたいです。
<%= f.select :status, Order.statuses.keys.map {|k|k]} %>
Kがどういう役割しているかわからなかったのでそのまま残してみてこのような記述になりました。
これで表示してもちゃんと機能表示ともにOKでした。
完成形
モデルに表示するための要素を記入することを忘れない。
orders.rb
enum status: { 入金待ち: 0, 入金確認: 1, 製作中: 2, 発送準備中: 3, 発送済み: 4 }
orders/show.html.erb
<%= form_with model:@order, url: admin_order_path, method: :patch do |f| %>
<%= f.select :status, Order.statuses.keys.map %>
<%= f.submit '更新' %>
<% end %>
上記の記述で表示させることができました🎉🎉
解説
<%= f.select :status,Order.statuses.keys.map {|k| [t("enums.order.status.#{k}"), k]} %>
別のメンターさんに聞いたら上記のようなの書き方もあるって言われた
Discussion