#解決したいこと
現在、Rails6.0.0を使用しております。
simple_calendarを導入しました。
練習メニューや目的を投稿すると、カレンダーの日付に反映されるというようなアプリの制作を考えております。
現在の主なコントローラーは
User,Calendar,trainingの3つになります。
現在実装したい内容としては、trainings#newに、練習内容を投稿すると、
Root toに設定しているcalendars#indexの指定した日にちに、リンク付きのユーザー名と、training_menu(練習メニュー)が表示され、リンク先をクリックすると、練習投稿のメニューの詳細が出るように表示をしようと考えているところです。
しかし、現在は、trainings#newから投稿をすると、Calendars#index反映されません。。
どうやって日付を特定すれば良いのか分からなくなってしまったので、ご相談いただければと思います。
日付を特定する方法が分からない状態です。投稿フォームの日付を送信しているので、その日付とカレンダーの日付を結びつければ、うまくいくのでは無いかと思っているのですが。
具体的には、@calendarsの中にdateが存在しているので、それが存在している時に、dateに表示というようにしたいです。
#calendars#index
<div class= 'calender'> <%= month_calendar calendars: @calendars do |date| %> <%= date %> <% @calendars.each do |event| %> <% if event.date == date %> <% event.training_menu %> <% end %> <% end %> <% end %> </div>
#calendars controller
class CalendarsController < ApplicationController def index @calendars = Calendar.all @calendar = Calendar.create(calendar_params) end def create Calendar.create(calendar_params) redirect_to action: :index end def new @calendar = Calendar.new end private def calendar_params params.permit(:date, :training_menu, :purpose, :introspection) end end
#trainings#new
<h1>練習内容</h1> <div class="parent"> <%= form_with url: calendars_path, id: 'new_training', class: 'new_training', method: :post, local: true do |f| %> <div class="field"> <%= f.label :日付を選択, class: 'date_lavel' %> <%= f.date_field :date, class: 'select_date' %> </div> <div class="field"> <%= f.label :"練習メニュー" %> <br> <%= f.text_area :training_menu, autofocus: true %> </div> <div class="field"> <%= f.label :"目的" %><br> <%= f.text_area :purpose, autofocus: true %> </div> <div class="field"> <%= f.label :"反省" %><br> <%= f.text_area :introspection, autofocus: true %> </div> <div class="register_actions"> <div class="actions"> <%= f.submit "登録" %> </div> </div> <% end %>
以上がコードの内容になります。
参考にさせていただいた記事としては、以下になります。
【rails】simple_calendarを使ってカレンダーつきのブログ機能を作ってみた
Rails Gem simple calendarでのカレンダー実装と条件分岐
Railsでタスク管理ができるWebアプリを作成してみた(Rails入門)
【HowTo】Simple Calendar/カレンダーをお手軽に導入してみる(投稿機能付き)
大変お手数おかけしますがご確認よろしくお願いいたします。
あなたの回答
tips
プレビュー