【個人アプリ作業メモ】simple_calendarでカレンダーを作る


カレンダーの設置はできた。

ここにpostsテーブルの情報を追加していきたい。

https://github.com/excid3/simple_calendar
公式ページを参考に進めていくか。

app/views/calendars/index.html.haml
.calendar
  = month_calendar events: @posts do |date, meeting|
    = date
  - posts.each do |post|
    = post.calorie
app/controllers/posts_controllers
class CalendarsController < ApplicationController
  def index
    @posts = Post.where(user_id: current_user.id)
  end
end

これで表示できなかった。

https://qiita.com/isaatsu0131/items/ad1d0a6130fe4fd339d0
この記事によれば、カレンダーに出力したいテーブルで
t.datetime :start_time
と設定する必要があるみたいだ。

postsテーブルのデータを表示するためにどうすればいいか?

仮説

仮説1:postsテーブルにstart_timeカラムを用意する。
仮説2:posts_controllerのストロングパラメータのpermitでstart_timeカラムを許可する。
仮説3:start_timeカラムに何らかの値が入っている必要があるので、start_timeカラムにデフォルト値を入れておく。

これで解決した

posts_controller.rb
@post = Post.new(post_params)
 # 今日の日付を取得(simple_calendarのため)
@post[:start_time] = Date.today.strftime('%Y-%m-%d')

これで今日の日付を取ってきて、posts_tableのstart_timeカラムに自動で入れるようにした。
ちなみに、投稿するときのフォームではstart_timeを入力するフォームは用意してない。

つまり、フォームで入力しなくても、
投稿すれば自動的にstart_timeカラムに投稿した日付が入るようにしたということ。

この赤枠の部分に値が入ってないと
イベントとして表示されない。

これでstart_timeに日時の値が入ったことで、
無事simple_calendarにイベントを表示することができた。