Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

駆け出しエンジニアの第一歩!Advent Calendar 2020

Day 11

【Rails】simple-calendar カレンダーから直接日付を取得する

Last updated at Posted at 2020-12-20

はじめに

本記事は、 駆け出しエンジニアの第一歩!AdventCalendar2020 11日目の記事です。
RailsでSimple-calenderを導入した時につまづいた点に関して記事にします。

今回の記事のようなケースに陥ることはあまりないと個人的には思います。というのも日付のカラムがあれば事足りるからです。

また、created_atから日付情報を取得するという手もあるが、今回はそうではない(違う日付の登録もできるような)仕様にしたいのでしません。

私の場合、計算された合計値を保存するテーブルがないにもかかわらず、合計値をカレンダーに出力したため、日付情報のない単なる数字のリンクができるだけでした。そのため、カレンダーから直接日付情報を取ってくる必要がありました。

開発環境

IDE:Cloud9
Ruby:2.6.3
Rails:5.2.4
simple-calendar:2.4.1

困っていること

カレンダーに表示されている総カロリーのリンクをクリックすると、その日付ページの詳細情報が表示されるようにしたい。しかし、総カロリーは合計値を表示しているだけなので、総カロリーが属するテーブルがなく、日付の情報を取得することができない。
やりたいこととしては、viewの情報(日付)をcontrollerへ渡したい。
スクリーンショット 2020-12-11 15.15.41.png
スクリーンショット 2020-12-11 16.05.14.png

解決までの道のり

まず、カレンダーのviewは以下のようにしました。(<%= date %>は確認のため付けてるだけです。)

view
総カロリー:<%= link_to sum, users_my_page_show_path %> kcal
<%= date %>

カレンダーに<%= date %>を出力するようにすると、カロリーの後ろに日付が表示される。つまり、パラメーターとして拾ってこれていないだけで、日付の情報は確かにある。
_2020-11-18_10.04.08.png
今のままでは当然、どのリンク先もusers_my_page_pathに飛ぶだけで意味がない。どのリンクにカーソルを合わせても以下のように表示されるだけである。
_2020-11-18_10.03.03.png

そこで、リンクの引数に(date)を追加してみる。するとカーソルを合わせた日付の情報がurlに乗っていることが確認できた!

view
総カロリー:<%= link_to sum, users_my_page_show_path(date) %> kcal
<%= date %>

_2020-11-18_10.03.31.png

この状態でコントローラ側をデバックした後、リンクをクリックし、パラメーターのありかを突き止める。
paramsを入力すると、乗っているパラメーターを見ることができる。どうもformatというところに日付の情報が入っているらしい。
_2020-11-18_10.06.31.png
結果、コントローラで以下のように定義してあげることで、カレンダーから直接日付を取得することができた。あとは、表示したい詳細情報に@day_paramsを渡してあげれば、カレンダーの日付に基づいた内容を表示できる。

controller
def my_page_show
  @day_params = params[:format]
end

参考記事

まとめ

参考記事の方が参考になるかもです。

4
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

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar 🎅

Some calendars come with gifts and some gifts are drawn from all calendars 👀

Please tie the article to your calendar and let's enjoy Christmas together!

4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?