【Rails】Ransackで検索機能を実装しよう
今回はオリジナルアプリ開発を進める中で検索機能の実装を行ったのでその方法について説明していきます。
・gemをインストールしよう
・コントローラーの設定
・ビューの設定
gemをインストールしよう
検索機能を実装するために今回はRansackというgemを使用します。
このgemを使用することでとても簡単に検索機能を実装できるのでぜひ活用していきましょう。
ということで、gemfileにgem 'ransack'を追加してbundleコマンドでインストールを行いましょう。
コントローラーの設定
gemのインストールが完了したら次はコントローラーの設定を行いましょう。
今回は架空の質問投稿アプリがあるものとしてコードを書いていきます。
app/controller/questions_controller.rb
def index @q = current_user.ransack(params[:q]) @questions = @q.result(distinct: true).recent end
ここで使用されているメソッドについて説明します。
・.ransackメソッド…送られてきたデータをもとにデータベースからデータを検索してくれるものです。
・params[:q]…ビューファイルから送られてくるデータが格納されています。
・.result…取得したデータをActiveRecord_Relationのオブジェクトに変換してくれます。
これでコントローラー上での設定は完了しました。
最後にビューファイルに変更を加えましょう。
ビューの設定
ビューでは検索フォームの作成を行います。
コードは以下のように書きます。
<%= search_form_for @q do |f| %> <%= f.search_field :name_cont %> <%= f.submit %> <% end %>
ここでもそれぞれの要素について説明します。
・search_form_for…検索フォームを作るためのHTMLを出力してくれます。
form_withなどの検索版であるとイメージしてください。
・name_cont…カラムのどの要素で検索を書けるのかを決めてくれています。
今回だとnameなのでユーザーの名前で検索をかけてくれます。この部分を指定したいカラムに変更することでそのカラムについての検索ができます。
以上で検索機能の実装についての説明を終わります。
ここでは紹介できなかった要素もたくさんあるので興味のある人はより深く調べてみてください。
参考資料:
【Rails】 ransackを使って検索機能がついたアプリを作ろう! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト