2019年10月1日火曜日

Ransackを使用したソートのデフォルトの表示順を変更する

Ransack のREADMEにあるこの方法は、ソートのリンクをクリックした際に昇順・降順どちらから始めるかを指定するだけで、クリックする前の表示順は変えてくれない。

<%= sort_link(@q, :name, 'Last Name', default_order: :desc) %>

ソートが未選択の場合の表示順を変更したい場合、コントローラーで指定する。

Sorting in the Controller · activerecord-hackery/ransack Wiki
https://github.com/activerecord-hackery/ransack/wiki/Sorting-in-the-Controller

上記のWikiでは @search となっていますが、現在のREADMEの例に合わせて @q を使うとこんな感じ。

@q = Post.ransack(params[:q])
@q.sorts = 'name asc' if @q.sorts.empty? # ソートが未選択の場合はnameの昇順で表示
@posts = @q.result.paginate(page: params[:page], per_page: 20)

0 件のコメント:

コメントを投稿