彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Rails の date_select でつくるセレクトボックスを「年」「月」「日」で区切る

Rails では date 型のデータについて date_select メソッドを使うと簡単にセレクトボックスをつくれて捗りますよね。

デフォルトでは下記のように年月日の区切りは空白です。

f:id:inouetakuya:20140202004459p:plain

<div class="birth_date_field">
  <%= f.label :birth_date %>
  <%= f.date_select(
        :birth_date,
        start_year: 1930,
        end_year: (Time.now.year - 18),
        default: Date.new(1989, 1, 1)) %>
</div>

年月日の区切りにスラッシュを入れる

まぁこれでも良いっちゃ良いけど、もう少し分かりやすくしたいなと思い、区切りにスラッシュを入れてみました。

f:id:inouetakuya:20140202004452p:plain

<div class="birth_date_field">
  <%= f.label :birth_date %>
  <%= f.date_select(
        :birth_date,
        use_month_numbers: true,
        start_year: 1930,
        end_year: (Time.now.year - 18),
        default: Date.new(1989, 1, 1),
        date_separator: '/') %>
</div>

年月日の区切りに「年」「月」「日」を入れる

まぁこれでも良いっちゃ良いけど、もう一声ということで、年月日を入れようと思ったら、それ用のオプションがない。。

何か gem があるかなと思って探してみたけど見つからなかったので、多少強引に書きました。

f:id:inouetakuya:20140202004443p:plain

<div class="birth_date_field">
  <%= f.label :birth_date %>
  <%= raw sprintf(
            f.date_select(
              :birth_date,
              use_month_numbers: true,
              start_year: 1930,
              end_year: (Time.now.year - 18),
              default: Date.new(1989, 1, 1),
              date_separator: '%s'),
            '年 ', '月 ') + '日' %>
</div>

よろしければ参考にしてください。ではでは。