WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Railsのdate_selectヘルパーでのデフォルト値設定時の注意

   

デフォルト値の指定

以下のようにdefault:の引数に日付オブジェクトを渡して指定可能。

= f.date_select :birth_day, start_year: 100.years.ago(Date.today).year, default: @the_date

値をハッシュにすれば、年月日それぞれで指定することも可能。

= f.date_select :birth_day, start_year: 100.years.ago(Date.today).year, default: { year: 2004, month: 3, day: 15 }

include_blankについて

include_blankオプションで空の選択肢を表示可能。

= f.date_select :birth_day, start_year: 100.years.ago(Date.today).year, include_blank: true

ただし、このinclude_blankオプションはdefaultオプションと競合する。
例えば、下記ではデフォルトで指定した2004/03/15は選択されず、空の選択肢が選択された状態でセレクトボックスが出力される。

= f.date_select :birth_day, start_year: 100.years.ago(Date.today).year, include_blank: true, default: { year: 2004, month: 3, day: 15 }

デフォルトで西暦だけ2004年を選択させて、月日は空にしたいという要件があった場合はクライアントサイドで対応するのが一番手っ取り早い。

  $(document).ready ->
    if $("#user_birth_day_1i").length == 1 && $("#user_birth_day_1i").val() == ""
      $("#user_birth_day_1i").val(1982)

 - Ruby on Rails ,