LoginSignup
7
5

More than 5 years have passed since last update.

rails_adminでenumな値は数字でなくlocaleの値を表示させたい

Last updated at Posted at 2014-04-14

例えば性別で、DBのカラムに0, 1とかで入ってるけど、表示時に男性、女性などと表示させたい場合の方法。

本来なら:enumだけで良くない?って思ったけど、他にも記述する必要がありました。

config

ja.ymlは以下だという前提。

ja.yml
ja:
  gender:
    - '男性'
    - '女性'

config/initializers/rails_admin.rbを編集すると色々カスタマイズできます。

以下はあくまで例

config/initializers/rails_admin.rb
RailsAdmin.config do |config|

  <略>

  config.model 'User' do
    # いじらない項目についても書いておかないと省かれてしまうので列挙
    field :id
    field :email

    # :enumを書くことで新規作成時などにプルダウンで選択できて便利
    field :gender, :enum do
      # 表示用の設定
      # valueには表示項目の値が入ってくる(この場合は0 or 1)
      # nameにはfieldの名前が入ってくる(この場合はgemder)
      pretty_value do
        I18n.t(name)[value] if value
      end

      # csvなどでエクスポートするときの設定
      export_value do
        I18n.t(name)[value] if value
      end
      enum do
        I18n.t(name)
      end
    end

    # 今回のenumの話とは関係無けど誕生日と一緒に年齢を表示する方法
    field :birth_date do
      pretty_value do
        age = Time.now.year - value.year
        "#{value.strftime("%Y-%m-%d")} (#{age}才)"
      end
      export_value do
        age = Time.now.year - value.year
        "#{value.strftime("%Y-%m-%d")} (#{age}才)"
      end
    end
  end
end

もっとスマートな方法があったら教えて欲しいです。例えばja.ymlのどこかに書くだけでいいとか。。。

参考

https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL#search_word=enum
https://github.com/sferik/rails_admin/wiki/Enumeration

7
5
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
7
5