RailsでWEBアプリを作って海外移住

30歳にしてサラリーマンをリタイア、WEBの世界で、ご飯を食べて、海外移住に挑戦

Railsで検索結果をソートしてみる (controller)

こんにちは、39の管理人ケンタリートです。以前に実装した旅行者の情報を共有するシステムFind a traveler機能も徐々に使われてきました。

f:id:kentarito:20160607232955j:plain

これはキャプチャーですが、詳細を見るには下記のリンクからどうぞ。

http://www.languageexchange39.com/travels

この時に気付いてしまいました。並んでいる順番がおかしいと。上のキャプチャー画面は修正後ですが、以前はログインしたユーザが一番上に表示されるようになっていました。これはユーザ検索機能で、最近ログインしたユーザに上に表示されるようにした設定を、そのままコピーしていたからです。

検索機能には、Railsアプリの基本であるRansackを使用しています。
下記が変更後のソースです。

  def index
    @search = Travel.search(params[:q])
    @search.sorts = 'begindate desc' if @search.sorts.empty?
    @travels = @search.result.paginate(:page => params[:page], per_page: 10)
  end

このRansackで見つけた検索結果のあとに、sortsを使うっていうのが素人にはうやむやなんですよね。これが参考になれば幸いです。