15
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Ruby on rails]いいねの一覧表示 member doとcollection doの違い・plunkについて

Posted at

初めに

以前、いいね機能&非同期通信を行いました。
今回いいねの一覧を作成したいと思います。

前回の記事はこちらから。

調べてみると色々とやり方があるみたいでした。

今回は、ルーティングでのcollectionやmember、plunkについても学べました!

ルーティング作成

routes.rb

  resources :users, only: [:show,:index,:edit,:update] do
    member do
      get :favorites
    end
  end

どういうルーティングにしたいかというと、
ユーザーのマイページから、そのユーザーのお気に入りしてる記事に飛びたいので、
users/1/favorites というルーティングにしたい。
となるとmember doを使用します。

member do / collection doについて

member doって何なのか??

member doを使うと、ユーザーidが含まれてるurlを使えるようになります。 member は特定のデータに対するアクションに利用するそうです。

ルーティングはこうなります。
users/:id/favorites
スクリーンショット 2021-08-08 11.36.27.png

collection doって何??

今回、使用していませんが、よく目にするのがcollection doです。
仮にここをcollection doで記述すると、
ルーティングは users/favoritesになります。

スクリーンショット 2021-08-08 11.35.23.png

```member```と```collection```の違いは、idがつくか、つかないか です。

collectionは集合なのでidはなし、memberは個別なのでidありです!!

コントローラー

```perl: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)
end


```favorites= Favorite.where(user_id: @user.id).pluck(:post_id)```
さて、この記述です。
ユーザーidが、このユーザーの、いいねのレコードを全て取得します。
そして、そのpost_idも一緒に持ってくる
それをfavoritesに代入。
結果、favoritesの中身には、何が入ってるかというと、あるユーザーがいいねした記事のidです。

<h5>whereの復習</h5>
与えられた条件にマッチするレコードを全て取得します。
<h4>plunkって何???</h4>
Product.pluck(:name)という記述があった場合、
productモデルのnameカラムの一覧を持ってこれる。
1つのモデルで使用されているテーブルからカラム (1つでも複数でも可) を取得することができるそう。


<h2>View</h2>
もの凄く簡単、シンプルなviewですので、参考までに。

```perl:users/show.html.erb
<p><%=link_to"お気に入り記事",favorites_user_path(@user) %></p>
favorites.html.erb
いいね一覧
<% @favorite_posts.each do |post|%>
<%=post.title %>
<% end %>

これで、いいねした記事の一覧ページが作成出来ました。

大変、参考にさせていただいた記事

モデルに定義するやり方だったり、やり方は色々あるみたいで、
中々しっくりくる記事に出会えませんでしたが、
上記の記事でシンプルかつ簡単に実装出来ました。

15
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?