2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

collection_selectを使って、Active_Hashに格納したデータをプルダウンにする

Posted at

##概要

今回実装したいのは、商品出品機能を実装する際に、発送元や商品の状態などの変化しない情報をActive_Hashとして格納して、ビューファイルにプルダウンとして表示する機能です。

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

余談ですが、クラス名はアッパーキャメルケースで記述しましょう。
エラー起こして、一回迷子になってしまいました...

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?