0
0

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 5 years have passed since last update.

enumを使って日本語表記セレクトタグを作ったので覚え書き

Last updated at Posted at 2019-02-12

##概要
複数の父親を持つ複雑な家庭環境を表現してみましょう。
(本来こんなことで使わないでしょうが、いろいろこれ用に書き換えてたらこうなりました…
この場合、普通に"dad"はChildのカラムとして使うことならありそうかな…テーブル分ける必要はゼロですね。)

##環境
Rails5.1
jquery3.3.1
mysql

###データベース

Father

id dad
1 0
2 1
3 2


Child

id name father_id
1 hoge 1
2 fuga 1
3 hogehoge 2
4 hiroshi 2

(母:マダム)

##コード

father(単数)ー children(複数)
の関係です。
子モデル設定▼

models/child.rb
class Child < ApplicationRecord
  belongs_to :father
end

親モデル設定▼

models/faher.rb
class Father < ApplicationRecord
  has_many :children
  enum fathers: {dad_1: 0,dad_2: 1,dad_3: 2}
end

フォーム部分でも表示される変換後の内容▼

config/locale/ja.yml
ja:
  children:
    fathers:
      dad_1: '最初のお父さん'
      dad_2: '今のお父さん'
      dad_3: '未来のお父さん'

コントローラーはテキトー設定をして

フォーム部分▼

view/form.rb
= form_for(@child, url: hoge, html: {method: :post}) do |f|
= f.text_field :name, placeholder: "new_baby"
= f.select :father, Child.fathers.map{
|k, v| [t("children.father.#{k}"), v]
}, prompt: "—"

はい、
これで末っ子のヒロシくんの次に生まれてくるとしたら誰の子なのかはっきりしますね笑
(実際はみんな一人目の子供みたいですね。
てかこのために調べたら4人兄弟とか、某大企業元代表の子って、知らなかったです。)

冒頭でも書いているように使用する場面は違うでしょうが、覚書程度に使い方の復習メモです。

※この内容はフィクションです。実在の人物や団体などとは関係ありません。

勉強中の身のため、
ご指摘等あればコメントにてお願いいたします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?