Railsで検索結果をソートしてみる (controller)
こんにちは、39の管理人ケンタリートです。以前に実装した旅行者の情報を共有するシステムFind a traveler機能も徐々に使われてきました。
これはキャプチャーですが、詳細を見るには下記のリンクからどうぞ。
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を使うっていうのが素人にはうやむやなんですよね。これが参考になれば幸いです。