feed実装 フォローしているユーザーの投稿を見る。 フォロー機能続き


ここの記事は、以前書いた記事の続きです。
 以前の記事は、ユーザーをフォローする機能を書きました。
  http://qiita.com/kitaokeita/items/59b625e0c43a62f5fe6a

今回は、フォロー機能を使って、feed機能を作ってきます

rb:環境
rails 5.0
ログイン機能は、deviseで作っている。

フィード実装前の状態

        deviseで、userモデルを作っている。パスワード以下の項目は省略

id 名前  メールアドレス
山田 [email protected]
佐藤 [email protected]
山本 [email protected]

 

本の登録するために、bookモデルを作っている。 内容は、本のタイトルと感想です。

bookモデル
id 本のid
title 本のタイトル
content 本の感想  
user_id ユーザーid

まず最初に、投稿用のcontrollerとviewを作ります。

$ rails g controller Page show

app/controllers/pages_controller.rb
class PagesController < ApplicationController
     before_action :sign_in_required, only: [:show]

  def show
      @feed_items = current_user.feed.paginate(page: params[:page])
  end
end
app/views/users/show.html.erb
<% if @feed_items.any? %>
  <ol class="books">
    <%= render @feed_items %>
  </ol>
  <%= will_paginate @feed_items %>
<% end %>

投稿用に
_book.html.erbを作る。

app/views/books/_book.html.erb
  <div class="container">
  <div class="row"> 
    <div class="col-xs-6 col-md-3">

           <p><%= book.title %></p>
           <p><%= book.content %></p>



     </div>

  </div>
</div>


app/models/user.rb
def feed
    following_ids = "SELECT following_id FROM relationships
                     WHERE follower_id = :user_id"
    Book.where("user_id IN (#{following_ids})
                     OR user_id = :user_id", user_id: id)
  end

参考
 https://railstutorial.jp/ 13章、14章