読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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