date_selectはRailsの初期の頃から実装されていた、formタグの一つです。
名前の通り、日時の入力に特化したタグで力技でoptionのフォーム生成をやってくれます。
実際のところ
formで生成するときは、以下のようにします。
オプションの意味は公式ドキュメント見に行って下さい。
色々あります。
<div class="field"> <%= f.label "生年月日" %><br> <%= f.date_select :birthday, :start_year => 1990, :use_month_numbers => true , :date_separator => "-" %> </div>
すると、こんなスクリプトが吐き出されます。
……うん、これは力技ですね、間違いない。
<div class="field"> <label for="professor_生年月日">生年月日</label><br> <select id="professor_birthday_1i" name="usr[birthday(1i)]"> <option value="1990">1990</option> // 略 <option value="2015">2015</option> <option selected="selected" value="2016">2016</option> <option value="2017">2017</option> // 略 <option value="2021">2021</option> </select> -<select id="professor_birthday_2i" name="usr[birthday(2i)]"> <option value="1">1</option> <option value="2">2</option> <option selected="selected" value="3">3</option> <option value="4">4</option> // 略 <option value="12">12</option> </select> -<select id="professor_birthday_3i" name="usr[birthday(3i)]"> <option value="1">1</option> // 略 <option value="11">11</option> <option selected="selected" value="12">12</option> // 略 <option value="31">31</option> </select>
表示はこんな感じ。
CSSで綺麗にしてあげれば、格好は良くなるかも。
date_fieldとdate_selectの違い
似たものに、date_fieldがあります。
これは文字列を渡してdate形式のデータを取り出すフォームです。