LoginSignup
12
16

More than 5 years have passed since last update.

Ransack Hacks !!

Last updated at Posted at 2015-01-07

検索用のGem。ソート機能(!)もあります。

http://qiita.com/nysalor/items/9a95d91f2b97a08b96b0
http://qiita.com/LuckOfWise/items/e020e896e71d47d0c6a4

まだまだ国内での情報少なそう(あまり使っている人がいない・・・?)ので、色々使っている過程で気付いた事をメモ。

簡単な使い方 (要約)

コントローラで、

ModelName.all または ModelName.where(huga: :hoge) 等している箇所を

ModelName.search(params[:q]).resultModelName.where(huga: :hoge).search(params[:q]).result のようにすると使えるようです。

検索フォームのために .search の結果の状態が必要みたいなので、

def index
  @search = ModelName.search(params[:q])
  @results = @q.result
end

のようにインスタンス変数に突っ込んでおくのが通例のようですね (ワンライナー的には @results = (@search = Hoge.search(params[:q]).result とかでもアリかも。キモいかな・・・?)

sort_link 周り

ちなみに sort_link は search_form_for 等を使用していなくとも、 Huga.search(params[:q]) さえしていれば、使える模様です。

joinしたテーブルのカラムに対してのsort_link

hoges テーブルの huga カラムに対して sort_link したいとして、

.includes(:hoge) して

= sort_link @q, "hoges.huga"

とかやってみましたが、駄目でした・・・

これによると、以下のようにするといいみたいですね。

= sort_link @q, :hoge_huga

hoge の部分はアソシエーション名になる模様。

アンダーバー区切りで書けば勝手に判断してくれる模様。素晴らしきかな !


随時気付いた部分があれば、追記していこうと思います。 (大きなものに関しては、別エントリにしていきます)

12
16
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
12
16