Rails: 日時フィールドで令和を表示
外観
目的
datetime_selectで令和を表示します。今回は元号をハードコードしました。
環境
macOS 10.15.5
Ruby 2.7.1
Rails 6.0.3.2
Yarn 1.22.4
Node 14.0.0
参照
ActionView--Helpers
Railsタイムゾーンまとめ - Qiita
リポジトリ
https://github.com/usutani/try_datetime_select_reiwa
画面
開始日時のdatetime_selectに令和で年を表示しました。上記の図では比較のために下側のdatetime_selectは、scaffoldで生成したままの状態です。
メニューの開始年は今年に設定しました。
終了年はデフォルトの今年+5年です。
手順
rails new -TM --skip-active-storage try_datetime_select_reiwa
cd try_datetime_select_reiwa
bin/rails g scaffold Event name start_at:datetime end_at:datetime
bin/rails db:migrate
bin/rails s
open http://localhost:3000/events/new
config/application.rb
module TryDatetimeSelectReiwa
class Application < Rails::Application
# ...
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local
end
end
app/views/events/_form.html.erb
<div class="field">
<%= form.label :start_at, '開始日時' %>
<%= render 'reiwa_datetime_select', form: form, datetime_at: :start_at %>
</div>
<div class="field">
<%= form.label :end_at, '終了日時' %>
<%= render 'reiwa_datetime_select', form: form, datetime_at: :end_at %>
</div>
app/views/events/_reiwa_datetime_select.erb
<%= form.datetime_select(datetime_at,
start_year: Time.zone.now.year,
year_format: ->(year) { "令和 #{year - 2018} 年" },
month_format_string: "%<number>d 月",
datetime_separator: '日 ',
time_separator: '時')%>
<span>分</span>
以上です。
この記事が気に入ったらサポートをしてみませんか?