前提・実現したいこと
Rails5 で開発をしています。
SNSのタイムラインのようなビューを作りたいのですが、取得した@posts
配列内の要素の並び替えがうまくいかず悩んでいます。
発生している問題・エラーメッセージ
フォローしているユーザーの全投稿を格納した配列@posts
を、新しい順に並び替えたいのですが、うまくいきません。
該当のソースコード
@posts
をsort_by
メソッドで並べ替えて、全ての投稿を作成された時間順に並べたいのですが、どうしても、ユーザー1の投稿一覧(新しい順)→ユーザー2の投稿一覧(新しい順)→…とユーザーごとに分けられてしまいます。
concat
メソッドで配列を追加しているので、きちんと一次配列になっているはずだと思うのですが…
何かアドバイスがあればよろしくお願いいたします。
Ruby
1def following_posts 2 @user = User.find(params[:id]) 3 @users = @user.followings 4 @posts = [] 5 if @users.present? 6 @users.each do |user| 7 posts = Post.where(user_id: user.id).order(created_at: :desc) 8 #取得したユーザーの投稿一覧を@postsに格納 9 @posts.concat(posts) 10 end 11 #@postsを新しい順に並べたい 12 @posts.sort_by{|post| post.created_at} 13 if @posts.nil? 14 flash[:notice]="まだ投稿がありません…" 15 redirect_to("/") 16 end 17 else 18 flash[:notice]="誰かをフォローしてみましょう!" 19 redirect_to("/") 20 end 21 end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。