もた日記

くだらないことを真面目にやる

Railsメモ(12) : Ransackでテーブルのソート機能を追加する

Ransackにより検索機能を追加できたが、Ransackではテーブルのソート機能も追加できるようなので試してみる。
使い方はビューファイルのthタグ内をsort_linkヘルパーを使用して書き換えればよい。

<th><%= sort_link(@q, :title) %></th>

これでヘッダが図のようにクリック可能になり、

f:id:wonder-wall:20150810213058p:plain

ヘッダの部分を1回クリックすれば昇順に、

f:id:wonder-wall:20150810213104p:plain

もう1回クリックすれば降順にソートされる。

f:id:wonder-wall:20150810213112p:plain

sort_linkのオプション


ヘッダの表記を指定して、デフォルトを降順にしたい場合は以下のようにする。

<%= sort_link(@q, :title, 'タイトル', default_order: :desc) %>

titleカラムでソート後にyearカラムでソートのように、複数カラムでソートしたい場合は以下のようにする。

<%= sort_link(@q, :title, [:title, 'year asc'], 'タイトル') %>

クリックしたときに表示される▲や▼を非表示にするにはhide_indicatorを指定する。

<%= sort_link(@q, :title, hide_indicator: true) %>

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails