💻

【Rails】ransackのsort_linkでお手軽に並べ替え

に公開

絞り込み機能で有名なransackですが、sort_linkを使うと並べ替えもお手軽に実装できます。
https://activerecord-hackery.github.io/ransack/getting-started/simple-mode/#search-link-helper

基本

def index
    @q = Post.ransack(params[:q])
    @posts = @q.result
end
= sort_link(@q, :title, 'タイトル')

応用

複数のカラムで並べ替える

= sort_link(@q, :last_name, %i(last_name first_name), '氏名')

関連付けされたテーブルのカラムで並べ替える

def index
    @q = Post.joins(:cateogry).ransack(params[:q])
    @posts = @q.result
end
= sort_link(@q, 'category_name', 'カテゴリー')

Discussion