LoginSignup
1
4

More than 5 years have passed since last update.

【Rails】simple_calendarが表示するカレンダーの月はstart_dateが制御している

Last updated at Posted at 2018-12-25

 はじめに

メモ用。
タイトルの通り。simple_calendarで表示する月をコントロールさせたい場合
start_dateパラメータが制御しているって話。

simple_calendar

simple_calendarのgemをインストールし、
viewテンプレートのカレンダーを表示させたい箇所に以下を記載する。

  <%= month_calendar do |date| %>
    <%= date %>
  <% end %>

するとこんな感じで今月のカレンダーが表示される(当時:2018/12/25)
スクリーンショット 2018-12-25 21.03.53.png
ここで Previous をクリックすると、以下のように2018年11月のカレンダーが表示される。
スクリーンショット 2018-12-25 21.09.54.png

非常に便利だが、このままでは例えば10年前のカレンダーを表示させたい場合、Previousを120回クリックしなけれあならないことになる。
「2008年12月のカレンダー」と指定することはできないものか。

start_dateパラメータ

2018年11月の画像のURLを見ると?start_date=2018-11-25と、URLクエリでパラメータを送っているのが分かる。
simple_calendarはこの送られてきたパラメータによって何月のカレンダーを表示するかが制御されているようである。
?start_date=以降の文字列は2018-11-1でも2018-11-30でも何でも大丈夫。(ただし、2018-11-1002018-11-31などのように暦上存在しない日にちは✖️)

使い方

使い方としては、ブログなどのxx年xx月の記事といった使い方が想定できそう。
showでparams[:id]を "2018-12"のような表記として、

ジャンプしたいページとカレンダーの年と月が@year,@monthに代入されているとして、

<%= link_to "#{@year}年#{@month}月", blog_path("#{@year}-#{@month}", start_date: "#{@year}-#{@month}-1") %>

みたいな感じ。

参考情報

1
4
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
1
4