ActiveHashを表示する時に振り返りたいf.colection_select

問題 引数の内容がわからない

ActiveHashをいくかつくったので表示しようとしたところ、Viewでの表記はこんなになりました。

<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"genre-select"}) %>

()のなかについての説明をみるとちんぷんかんだったので、わかったところを振り返ります。

第一引数

データに名前をつけます。 関所であるストロングパラメーターでの手形的役割も果たします。 今のところカラム名を記述することが多かったです。

colection_select()

上記のような記述をする場合にはモデルを第一引数にします。すでにform_withでモデルを指定しているので今回はいりません。

第二引数

オブジェクトの配列をもってきます。 categoryモデルで配列を使用して作成したActiveHashを使用したいのでCategory.allとしました。 ここで注意! モデル名をcategory_animalとしたときは、categoryAnimal.allと命名規則に気をつけましょう。

第三引数

カラムに保存する項目を記述します。

class Category < ActiveHash::Base
    self.data = [
    { id: 1, name: '--' },
    { id: 2, name: 'お肉料理' },
    { id: 3, name: 'お魚料理' },
    { id: 4, name: '野菜料理' }
  ]
end

caregoryモデルです。idを保存したいので、:idとします。

第四引数

viewで選択肢として表示するキーを選択します。 :nameとするとお肉料理、お魚料理...と選択項目として表示されます。

第五引数

オプションをつけられます。 好みの状態にカスタマイズできるので詳しくは検索してみてください。

まとめ

たくさん引数があると気が引けてしまいますよね。 この多くの引数たちが表現の幅や簡便性を生み出してくれるので、ひとつずつ紐解いてcoolな選択肢を作りましょう!