1
0

【Rails】一覧表示の順番を指定する(古い順、新しい順)

Last updated at Posted at 2024-03-10

こんばんは!
ポートフォリオ実装でユーザーの使いやすさを考えたときに、一覧といってもものによっては古い順、新しい順と変えた方がよさそうだと気づき、実装してみました!
実装自体はコントローラ―の記述を少し加えるだけだったので、ご紹介したいと思います。

環境

AWS Cloud9
Rais 6系

方法

新しい順

例えばですが、普通の投稿の一覧などはより新しい情報をユーザーに見せたいですよね!特に投稿1つ1つに文脈などの関係がない場合は新しい順の方が適しているといえます。
そのような場合どのように新しい順にするか説明したいと思います!

普段だと一覧表示をしたい際には

app/controller/xxxx_controller.rb
class XxxxsController < ApplicationController
  def index
    @posts = Post.all
  end
end

というように記述しますよね。これだと特に順番は指定されていない状態で、更新などがあると順番が変わる可能性があります。
そのため、新しい投稿などを上に表示させたい場合は

app/controller/xxxx_controller.rb
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の降順で並べることができます。

古い順

コメント機能などは上から順を追っていかないと話の流れが分からないことがありますよね。そんな場合、古い順(昇順)で並べられるように指定してみましょう!

新しい順とほとんど同じですが、後ろの方に注目してください!

app/controller/xxxx_controller.rb
class XxxxsController < ApplicationController
  def index
    @posts = Post.all.order(created_at: :asc)
  end
end

古い順だと.order(created_at: :asc)を追記します!
今回新しく出てきたascで昇順になるよう指定しています(orderメソッド、created_atの説明は上でしているので割愛します:bow_tone1:)。

おまけ。asc, descは何の略?

asc: 昇順はascending orderともいい、ascもそこからきているようです。ascendingは直訳すると上昇で、イメージとしては小さい方から大きい方へ登っていくイメージです(0,1,2,3,4やあいうえおなど)。created_atの昇順と言葉でいうとイメージつきづらいですね。番号や配列などでイメージすると分かりやすいですが、古いものが小さい方にあたります。

desc: 降順はdescending orderといい、これも頭文字をとっていますね!こちらは大きい方から小さい方の順に並ぶというイメージで、created_atだと最新のものが大きい方にあたるので新しい順になります。

今回の説明はこれで以上です!
お疲れ様でした!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0