##概要
今回実装したいのは、商品出品機能を実装する際に、発送元や商品の状態などの変化しない情報をActive_Hashとして格納して、ビューファイルにプルダウンとして表示する機能です。
Active_Hashで都道府県などを格納する方法に関しては、別で記事を書いたのでそちらを参照してください。
##collection_selectとは
ヘルパーメソッドの一つで、セレクトボックスのなかに、キーを与えたバリューを表示できる記述です。
基本的な記述は
xxx.html.erb
f.collection_select(:カラム名, 要素の配列, value属性の項目, テキストの項目, { prompt: "選択してください" }
となるようです。
##例
今回は、商品出品する際に配送料の有無をPostageTypeクラスとして実装した例を書き残しておきます。
products/new.html.erb
<%= f.collection_select(:postage_type, PostageType.all, :id, :name, {}, {class:"select-box", id:"item-shipping-fee-status"}) %>
promptの部分は空にした場合、Active Hashの:id=1がプルダウンのデフォルトとして表示されるようです。
postage_typeのActive Hashの記述についても書き残しておきます。
models/postage_type.rb
class PostageType < ActiveHash::Base
self.data = [
{id: 1, name: '---'},{id: 2, name: '着払い(購入者負担)'},{id: 3, name: '送料込み(出品者負担)'}
]
end
余談ですが、クラス名はアッパーキャメルケースで記述しましょう。
エラー起こして、一回迷子になってしまいました...