Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

date_selectで(やや古風な)日付選択欄をつくる

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で綺麗にしてあげれば、格好は良くなるかも。
f:id:shuzo_kino:20160312213511p:plain

date_fieldとdate_selectの違い

似たものに、date_fieldがあります。
これは文字列を渡してdate形式のデータを取り出すフォームです。

参考もと

date_select
date_field