投稿の表示順を変えるソート機能を実装したのでまとめておきます。
kaminariをインストール
gemファイルに記載しbundle install
gem 'kaminari'
モデル
scope :latest, -> {order(created_at: :desc)} #新しい順
scope :old, -> {order(created_at: :asc)} #古い順
scope :random, -> { order('RAND()') } #ランダム
コントローラー
def index
@posts = Post.all
if params[:latest]
@posts = Post.latest.page(params[:page]).per(1)
elsif params[:old].present?
@posts=Post.old.page(params[:page]).per(1)
elsif params[:random].present?
@posts = Post.random.page(params[:page]).per(1)
else
@posts = Post.all.page(params[:page]).per(1)
end
end
ビュー
<div class="sort">
<%= link_to '新しい順', posts_path(latest: "true") %>
|
<%= link_to '古い順', posts_path(old: "true") %>
|
<%= link_to 'ランダム', posts_path(random: "true") %>
</div>