配列から任意の数だけ取り出して表示したい
やりたいこと
記事を表示するとき、上段と下段で表示数を分けて表示したい
個別記事のデザインは同じ(同じ部分テンプレートを使う)
posts_controller.rb
@posts = Post.all.limit(8)
コントローラでは8件の記事を取得したとする
実装するにあたって考えた方法
@postsには8件の記事がハッシュに入っている
→ハッシュの中の最初の2件を取得して上段に表示
→その2件を除いて、ハッシュの中から3件を取得して下段に表示
配列の中から最初の2件を取得する
take
配列の先頭から引数n個の要素を取り出して、新しい配列を作成して返す
[1] pry(main)> fruits = [ "orange", "apple", "lemon", "strawberry", "banana", "grape" ]
=> ["orange", "apple", "lemon", "strawberry", "banana", "grape"]
[2] pry(main)> fruits.take(2)
=> ["orange", "apple"]
配列の中から最初の2件を除いて残りの要素を取得する
drop
配列の先頭から引数n個の要素を取り除き、残りで新しい配列を作成して返す。
[3] pry(main)> fruits.drop(2)
=> ["lemon", "strawberry", "banana", "grape"]
最終的な実装方法
posts/index.html.erb
# コントローラで取得した8件の記事(ハッシュに格納されている)の中から最初の2件を取得して表示
<div>
<%= render partial: "posts/post", collection: @posts.take(2) %>
</div>
# コントローラで取得した8件の記事(ハッシュに格納されている)の中から最初の2件を除外して、さらに残りの6件から3件を取得して表示
<div>
<%= render partial: "posts/post", collection: @posts.drop(2).limit(3) %>
</div>
参考
Author And Source
この問題について(配列から任意の数だけ取り出して表示したい), 我々は、より多くの情報をここで見つけました https://zenn.dev/matsu18/articles/9eb1ac4cc16354著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol