bok_sakai2019/10/29 15:06ありがとうございます。ご助言いただいたように実行してみたのですが、下記のようにしてしまうとなぜか自分の投稿だけが2つ表示されてしまいます。。。 def index @user = User.find(current_user.id) @users = @user.followings @posts = [] if @users.present? @users.each do |user| following_user_posts = Post.where(user_id: user.id).order(created_at: :desc) current_user_posts = Post.where(user_id: current_user.id).order(created_at: :desc) #取得したユーザーの投稿一覧を@postsに格納 @posts.concat(following_user_posts) @posts.concat(current_user_posts) end #@postsを新しい順に並べたい @posts.sort_by!{|post| post.created_at}.reverse! if @posts.nil? flash[:notice]="もっとたくさんのヒョーロン家をフォローしましょう!" end else flash[:notice]="誰かをフォローしてみましょう!" end end
退会済みユーザー2019/11/17 01:12Railsは本業じゃないので思考的な箇所しか指摘出来ませんが、各postデータに重複したレコードが格納されている可能性が高いかと思います。 ※個人的には、以下のどちらかかなと思います ・@users にカレントユーザーが含まれている ・データの持ち方上following_user_postsにカレントユーザーのpostを釣ってきているか 値をデバッグするなりし、意図した値が取得できているか、確認してみたらいかがでしょうか?
SakStar2019/11/20 06:07 編集@users.eachのブロック内に自分の投稿を収集して@postsへ追加する処理が入っているからだと思います。 each内のブロックは見つかったuser分だけ繰り返されますから自分の投稿がその回数だけ追加されてしまいます。 ブロックの外に出せば良いと思います。 あるいは予め@usersにcurrent_userを追加しておけば良いと思います。 あと、if @posts.nil? は empty? ではなく?初期化済みなので nil にはならないと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 15:06
退会済みユーザー
2019/11/17 01:12
2019/11/20 06:07 編集