🚶
昇順と降順[scope]
今回は簡単な投稿日順のみ🥺
モデルに先に書くバージョン
model
scope :latest, -> { order(created_at: :desc) } #desc = 降順
scope :old, -> { order(created_at: :asc) } #asc = 昇順
😗 { scope名は任意だけど他の人もわかりやうい名前にはしようね!
scope名(例) | 意味 |
---|---|
latest | 新着順 |
old | 古い順 |
most_favorited | いいね順 |
star_count | 評価順 |
desc = 降順 (大→小 / 古→新)
asc = 昇順 (小→大 / 新→古)
controller(book)
if params[:latest]
@books = Book.latest
elsif params[:old]
@books= Book.old
else
@books =Book.all
end
🫨 {Book.allが既に定義されるときは消す!コメントにして確認がおすすめ⭐️
view
<%= link_to '新着順', posts_path(latest: "true") %>
<%= link_to '古い順', posts_path(old: "true") %>
私はボタンにしたかったので
<button type="button" class="btn btn-light">
<%= link_to '▶︎新着順', books_path(latest: "true")%>
</button>
<button type="button" class="btn btn-light">
<%= link_to '▶︎古い順', books_path(old: "true") %>
</button>
にして見ました🥱
文字色白にしたかったけどわからなかったので、もう少し調べて実装してみようかなやっぱり見た目変えれると楽しいなあ!
@orders = Order.includes(:customer, :order_details).order(created_at: :desc)
includesはN+1問題を解消するため!!!
Discussion