ユーザー(user)のマイページ(show)にいいね(like)した商品一覧を表示させます。
モデルの指定はこちらに記載してます。
# ルーティング
routes.rb
resources :users, only: [:index, :show] do
collection do
get :likes
end
end
userのshowアクションにネストさせます。
モデル
user.rb
has_many :likes, dependent: :destroy
has_many :like_items, through: :likes, source: :item
※今回のポイント
like_items
でuserがどのitemにいいねしているか取得できます。
# ビュー
users/_side-bar.html.haml
.side-bar
%section.side-bar__group
%h2.side-bar__group__title
マイページメニュー
%li.side-bar__group__list
= link_to "お知らせ", "#"
%li.side-bar__group__list
= link_to "いいねした商品", likes_users_path
リンク先likes_users_path
指定
users/likes.html.haml
.container-show
= render "side-bar"
.main
%section.main__group
%h2.main__group__title
〇〇さんのマイページ
%section.main__table
%h2.main__table__header
いいね!一覧
%ul.main__table__list
- current_user.like_items.each do |item|
%li
=link_to item_path(item), class: "main__table__list__item" do
%figure
= image_tag asset_path(item.images[0].content), :size =>'48x64'
.main__table__list__item__body
.main__table__list__item__body__text
= item.name
%br
= item.price
円
%i.fas.fa-chevron-right
likeファイルを作成
- current_user.like_items.each do |item|
で現在ログインしているuserがいいねしたitemを取得しています。
=link_to item_path(item)
で各商品詳細ページに遷移できるようにしてます。
#完成イメージ
ご指摘ありましたらぜひコメントよろしくおねがいします!!