🥰
【Rails】いいねした投稿を一覧表示する
🍍現状
いいね機能を実装している。
🍍ルーティング
config/routes.rb
resources :users, only: [:index, :show, :edit, :update, :new] do
member do
get :favorites
end
end
userにネストすることで、どのユーザーがいいねしたのかをurlで判別できるようになる。
どのユーザーか判別するためにはidが必要なのでmember
を用いる。
🍍コントローラー
users_controller.rb
def favorites
@user = User.find(params[:id])
favorites = Favorite.where(user_id: @user.id).pluck(:post_id)
@favorite_posts = Post.find(favorites)
@post = Post.find(params[:id])
end
🍍ビュー
さっき、userのcontrollerでfavoritesアクションを作ったので同じ名前のファイルをuserフォルダーに作成。
これでいいねしたpostのタイトルが表示される。
views/favorites.html.erb
<table class="table">
<tbody>
<% @favorite_posts.each do |post| %>
<tr>
<td>
<%= link_to post.title, post_path(@post) %>
</td>
</tr>
<% end %>
</tbody>
</table>
Discussion