🐴

Rails いいねしたユーザーの一覧表示

2023/06/11に公開2

はじめに

ポートフォリオ作成中のプログラミング学習初学者です🔰

今日はブログ投稿にいいねしたユーザーの一覧ページを作成しました!
あまり記事がなかったので、間違っているかもしれませんがお役に立てれば幸いです😀
(いいねは非同期で実装済みのていで進めます🙇🏻‍♀️)

model

下記の記述で、中間テーブルを経由して関連先のモデルを取得するのを簡単にします!
(liked_end_usersの名前の部分はなんでもOK!)

app/models/post_blog.rb
  has_many :liked_end_users, through: :blog_likes, source: :end_user

これで、ある投稿(post_blog)にいいねしたユーザーの一覧を取り出したい場合にpost_blog.liked_end_usersで取り出せるようになります。

routing

end_users, only: []の部分は各自で調整してください!

routes.rb
    resources :end_users, only: [] do
      member do
        get :likes
      end
    end
作成されたルーティング
likes_end_user GET    /end_users/:id/likes(.:format)                                                                    public/end_users#likes

view

いいね一覧のリンクをお好きな位置に設置してください!

app/views/public/post_blogs/show
<%= link_to "いいね", likes_end_user_path %>

controller

必要な変数を記述

app/controllers/public/end_users_controller.rb
class Public::EndUsersController < ApplicationController
  def likes
    @post_blog = PostBlog.find(params[:id])
  end
end

いいねしたユーザーの一覧ページ

app/views/public/end_users/likes.html.erb
  <% if @post_blog.liked_end_users.present? %>
    <h2>いいねしたユーザー</h2>
    <% @post_blog.liked_end_users.each do |end_user| %>
      <%= image_tag end_user.get_profile_image(50, 50) %>
      <p><%= end_user.first_name %></p>
      <% end %>
  <% else %>
    <h2>いいねはありません</h2>
  <% end %>

レイアウトはまだ整えてないのですが、こんな感じで無事いいねしたユーザーの一覧が表示されました!

参考にさせていただいた記事🌱

https://o6ga2wa8.hateblo.jp/entry/2021/09/28/220548


説明が大雑把&抜けているところがあるかもしれないです💦
間違いなどあればぜひ教えていただけますと幸いです🥲

Discussion