LoginSignup
10
5

More than 3 years have passed since last update.

Railsのdate_selectメソッドのinclude_blankオプションで、今日の日付をデフォルト表示する方法

Last updated at Posted at 2019-06-19

はじめに

Railsでタスク管理アプリを作成した際に、タスクに終了期限を登録するために、deta_selectメソッドにinclude_blankオプションを利用しました。
その時に、ブランクがデフォルトで表示されてしまい困ったので、解決方法を書きたいと思います。

前提

前提条件として、私が利用したRubyとRailsのバージョンは以下の通りです。

ruby '2.5.0'
rails '5.2.3'

再現

今回はすぐに確認できるようrails genererate scaffoldで簡易的にタスク管理機能を実装します。

rails generate scaffold task title:index limit:date

rails db:migrate

上記のコマンドを実行すると、タスクのコントローラー、モデル、ビューが良い感じに設定されると思います。
formを確認すると、次のようになっています。

views/tasks/_form.html.erb
<div class="field">
  <%= form.label :limit %>
  <%= form.date_select :limit %>
</div>

limit.png

しかし、終了期限は入力必須ではないので、include_blankオプションで、ブランクを入れられるように設定します。

views/tasks/_form.html.erb
<div class="field">
  <%= form.label :limit %>
  <%= form.date_select :limit, include_blank: true %>
</div>

blank.png
うーん、ブランクがデフォルトで選択されてしまっている。この状態から年月日を選択するのは面倒だな・・・。
ブランクを使えるようにしつつ、今日の日付がデフォルトで選択されるようにしたいな・・・。

解決策

selectedオプションにDate.todayを設定することで、ブランクを残しつつ、今日の日付がデフォルトで選択されるようになります。

<%= form.label :limit %>
<%= form.date_select :limit, include_blank: true, selected: Date.today %>

limit.png
以上です!

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5