こんばんは!
ポートフォリオ実装でユーザーの使いやすさを考えたときに、一覧といってもものによっては古い順、新しい順と変えた方がよさそうだと気づき、実装してみました!
実装自体はコントローラ―の記述を少し加えるだけだったので、ご紹介したいと思います。
環境
AWS Cloud9
Rais 6系
方法
新しい順
例えばですが、普通の投稿の一覧などはより新しい情報をユーザーに見せたいですよね!特に投稿1つ1つに文脈などの関係がない場合は新しい順の方が適しているといえます。
そのような場合どのように新しい順にするか説明したいと思います!
普段だと一覧表示をしたい際には
class XxxxsController < ApplicationController
def index
@posts = Post.all
end
end
というように記述しますよね。これだと特に順番は指定されていない状態で、更新などがあると順番が変わる可能性があります。
そのため、新しい投稿などを上に表示させたい場合は
class XxxxsController < ApplicationController
def index
@posts = Post.all.order(created_at: :desc)
end
end
というように、.order(created_at: :desc)
を付け加えます。この付け加えた部分を分解して解説すると、.order
はorderメソッドで、データの順序を変更するためのメソッドであり、その後ろの( )の中でcreated_at
と書くことで作成された日時を参照できます。そして、desc
というのは並び替えの降順(上から新しい順)で表示させることを示しています。つまり、作成日時を降順で並び替えしてくださいというような指示をしています。やりたかったことをしっかり指示できていますね!
応用編
少し応用させるとcreated_at
の部分をupdated_at
などに変更すると、更新した日時が近いものから降順で表示してくれます。また、created_at
の部分をid
に変えるとidの降順で並べることができます。
古い順
コメント機能などは上から順を追っていかないと話の流れが分からないことがありますよね。そんな場合、古い順(昇順)で並べられるように指定してみましょう!
新しい順とほとんど同じですが、後ろの方に注目してください!
class XxxxsController < ApplicationController
def index
@posts = Post.all.order(created_at: :asc)
end
end
古い順だと.order(created_at: :asc)
を追記します!
今回新しく出てきたasc
で昇順になるよう指定しています(orderメソッド、created_atの説明は上でしているので割愛します)。
おまけ。asc, descは何の略?
asc: 昇順はascending orderともいい、ascもそこからきているようです。ascendingは直訳すると上昇で、イメージとしては小さい方から大きい方へ登っていくイメージです(0,1,2,3,4やあいうえおなど)。created_atの昇順と言葉でいうとイメージつきづらいですね。番号や配列などでイメージすると分かりやすいですが、古いものが小さい方にあたります。
desc: 降順はdescending orderといい、これも頭文字をとっていますね!こちらは大きい方から小さい方の順に並ぶというイメージで、created_atだと最新のものが大きい方にあたるので新しい順になります。
今回の説明はこれで以上です!
お疲れ様でした!