カレンダーの表示について
解決したいこと
Ruby on Railsでクックパッドのようなwebアプリを作っています。
レシピを今週の献立カレンダーに追加する機能があるのですが、先週分、来週分が見れず、
追加実装したいのですが、どのようにやればいいかわかりません。
何か良い解決策があれば教えてください
仕様
該当するソースコード
app/controllers/users_controller.rb
def show
@user = User.find(params[:id])
@recipes = @user.recipes.order('created_at DESC')
@menus = Menu.all
@menu = Menu.new
get_week
end
private
def get_week
wdays = ['(月)', '(火)', '(水)', '(木)', '(金)', '(土)', '(日)']
@first_day = Date.today.beginning_of_week
menus = Menu.where(user_id: @user.id, date: @first_day..@first_day + 6)
@week_days = []
7.times do |x|
today_menus = []
menus.each do |menu|
today_menus.push(menu) if menu.date == @first_day + x
end
day = @first_day + x
days = { wday: wdays[day.wday - 1], month: day.month, date: day.day, menu: today_menus }
@week_days.push(days)
end
end
app/views/users/show.html.erb
<h1>献立表</h1>
<div class='calendar'>
<% @week_days.each do |day| %>
<div class='item'>
<div class='date'>
<%= day[:month] %>/<%= day[:date] %><%= day[:wday]%>
</div>
<div class ="menu-container">
<ul class ="menu-list">
<% day[:menu].each do |x|%>
<li>
<%= link_to x.recipe.title, recipe_path(x) %>
<%= link_to "➕", create_list_path(x.recipe), method: :post, class: "no-underline" %>
<%= link_to "❌", recipe_menu_path(x), method: :delete, class: "no-underline", class: "recipe-destroy", data: { confirm: '本当に削除しますか?' } %>
</li>
<% end %>
</ul>
</div>
</div>
<% end %>
</div><!--calender-->
実現したいこととしては、ページに来週分と先週分のカレンダーを表示するリンクを載せて、
それをクリックするとカレンダーが切り替わるようにしたいです。
(できれば非同期での実装)
自分で試したこと
users_controller.rb
にてget_weekメソッドの
@first_day = Date.today.beginning_of_week
を
@first_day = Date.today.beginning_of_week + 7.days
にすると来週分
@first_day = Date.today.beginning_of_week - 7.days
にすると先週分
のカレンダーが表示されました。
なので、
- リンクを押したらget_weekメソッドの内容を変更して再読み込みさせる
- あらかじめ
get_last_week
とget_next_week
メソッドを作っておいて、リンクを押したらそのメソッドを読み込ませる
などの方法を考えました。
しかし、リンクをクリックしてから読み込ませるメソッドを変えることができませんでした。
0