LoginSignup
0
0

More than 3 years have passed since last update.

性別を表示する

Posted at

ユーザーの性別を表示する方法を考えたので記録を残します。

カラムのデータ型をinteger、boolearn型にした場合

enumを利用するのが良いかなと思います。

enumチュートリアル

カラムのデータ型をstring型にした場合(私はこれにしました)

Form

  <%= markup do |m| 
    p = FamilyFormPresenter.new(form, self)
    m << p.gender_field_block
    end %>

htmlビルダーとプレゼンターを利用してフォームに組み込んでいます。

htmlビルダーについて

プレゼンターについて

Presenter

  def gender_field_block
    markup(:div, class: "radio-buttons") do |m|
      m << decorated_label(:gender, "性別")
      m << radio_button(:gender, "male")
      m << label(:gender_male, "男性")
      m << radio_button(:gender, "female")
      m << label(:gender_female, "女性")
    end
  end

以下のhtmlが生成されます。

<label>男性</label>
<input type="radio" value="male" name="family[gender]" id="family_gender_male">
<label>女性</label>
<input type="radio" value="female" name="family[gender]" id="family_gender_female">

ラジオボタンで男性を選択した場合、"male"、女性を選択した場合に"female"が保存されます。

ヘルパーに男性か女性を返すメソッドを作成します
/application.helper

#男性か女性を返す
  def judge_gender(gender)
    case gender
    when "male"
      "男性"
    when "female"
      "女性"
    else
      ""
    end
  end

/view

<%= judge_gender(@family.gender)%>

引数に性別属性を渡しています。

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