users
コントローラにアクションを追加するのではなく、followers
コントローラを新たに作成してindex
アクションを作成しようと思います。
Sayo-MacBook-Pro:emoji_diary SAYO$ bundle exec rails generate controller followers index
Running via Spring preloader in process 59679
create app/controllers/followers_controller.rb
invoke erb
create app/views/followers
create app/views/followers/index.html.erb
コントローラを作成したので、これに関するルーティングを追加しようと思います。
resources :users, only: [:new, :create, :index] do
resources :followers, only: [:index]
end
作成したコントローラを実装していきます。
class FollowersController < ApplicationController
def index
@users = @user.followings
end
end
ヘッダーにフォロワーの日記一覧を表示するリンクを追加します。
<li class='nav-item'>
<%= link_to t('defaults.follower_diary'), user_followers_path(current_user), class: 'nav-link' %>
</li>
リンクをクリックすると、followers#index
に遷移しました。
次にfollowers/index.html.erb
に週間カレンダーを実装していきたいです。ここで使うのは以前に導入したsimple_calendar
です。
<% @users.each do |user| %>
<h2><%= user.nickname %></h2>
<% @diaries = Diary.where(user_id: user.id) %>
<%= week_calendar events: @diaries do |date, diaries| %>
<%= date %>
<% diaries.each do |diary| %>
<%= link_to diary.feeling, user_diary_path(user, diary) %>
<% end %>
<% end %>
<% end %>
これでフォローしている人の日記の一覧画面が表示されました。今回の実装で、やりたかったけどできなかったことをメモしておきます。
ウィークリーカレンダー一つに全員の感情絵文字を表示したいのですが、simple_calendarが用意しているビューファイルの形成がいまいちわかっていないのあってうまくいかなかったです。画面遷移ももっと突き詰めて考えないといけないです。