ransackでソートする方法。

検索で使えるgemのransackですが、超便利っすね。
最近、自力で実装していたやつをransackで置き換えていってるのですが、随分コードが綺麗になりました。

ただ、情報が微妙に少ないというか、ググればあるんだけれど、本家のサイトには少ない感じがします。
今回はソートを複数の項目でやりたいと思っていたのですが、なかなか見当たらなかったのでメモです。

class ArticlesController < ApplicationController
  def index
    @articles = search
    respond_to do |format|
      format.html
      format.json { render json: @articles}
    end
  end

  private
  def search
    params[:q] ||= {}
    params[:q][:s] = %w(author_id category_name created) # 複数指定は配列を渡す
    @q = Article.search params[:q]
    # もしくはこう。
    # @q.sorts = %w(author_id category_name created)
    @q.result
  end
end

params[:q][:s]に、配列で文字列を渡します。
文字列をカンマ区切りで指定しても有効にはなりませんでした。


カテゴリー Ruby, Ruby on Rails | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です