1、ransackのgemをインストール
gem 'ransack'
2、アクションに検索処理を実装
boards_controller.rb
def index
@boards = Board.page(params[:page]).includes(:user)
@q = Board.ransack(params[:q])
@results = @q.result
end
params[:q]には実際に検索した値がデータとしてが入っている。
ransackメソッドは引数に渡した値を元にDBからデータを抽出している。
resultメソッドはransackメソッドで検索した内容をActiveRecordのオブジェクトに変換する。
3、検索フォームを作成する。
_search.html.erb
<%= search_form_for @q, url: url do |f| %>
<%= f.search_field :title_or_body_cont,class:'form-control', placeholder:"検索ワード" %>
<%= f.submit "検索", class: 'btn btn-primary' %>
<% end %>
ransackジェムによりsearch_form_for
メソッドが使えるようになる。
search_form_for @q
はフォームに入力した検索ワードをindexアクション内のparams[:q]として@qに送っている。
title_or_body_cont
はtitleとbodyから完全一致という意味である。(https://pikawaka.com/rails/ransack#_contメソッド)
### 参考にしたURL
https://pikawaka.com/rails/ransack#_contメソッド