今回はあえて自作で作ります。
ControllerとViewを用意するのに面倒なのでScaffoldします。
カラムは空でも実行されます。必要に応じて追加してください。
$ rails generate scaffold Calendar
migrateします。
$ rails db:migrate
祝日の判定にholiday_japanを使うのでGemfileに書いてbundle installしておいてください。
Gemfile
gem 'holiday_japan'
bundle installします。
$ bundle install --path vendor/bundle
Viewを以下のように書き換え
app/views/calendars/index.html.erb
表示するカレンダーは… <%= params[:month] ? @today = params[:month].to_date : @today = Date.today %><br /> 最初の週の日曜は… <%= @start_calendar = @today.beginning_of_month.beginning_of_week(:sunday) %><br /> 最後の週の月曜は… <%= @end_calendar = @today.end_of_month.end_of_week(:sunday) %><br /> 1ヶ月後は… <%= @next_month = @today.next_month %><br /> 1ヶ月前は… <%= @prev_month = @today.prev_month %><br /> <style type="text/css"> #week_color_today { background:#DFD; } #week_color_holiday { background:#FDD; } #week_color0 { background:#FDD; } #week_color6 { background:#DDF; } </style> <hr /> <%= link_to "<<前の月",calendars_path(month: @prev_month) %> <%= link_to "次の月>>",calendars_path(month: @next_month) %> <%= @today.strftime("%Y年%m月") %> <table border=1> <% (@start_calendar..@end_calendar).each do |calendar| %> <%== "<tr>" if calendar.sunday? %> <td id="week_color<%= HolidayJapan.check(calendar) ? "_holiday" : calendar.today? ? "_today" : calendar.wday %>"> <%= calendar.day if calendar.month == @today.month %> </td> <%== "</tr>" if calendar.saturday? %> <% end %> </table>
今回はViewだけで作りました。