🥰

【Rails】いいねした投稿を一覧表示する

2023/09/04に公開

🍍現状

いいね機能を実装している。

🍍ルーティング

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