[rails]ransackを使用して検索機能


今回はransackを使用して、検索機能を実装したのですが
少しだけ悩んだところがあったので抜粋して書きます。

ActiveHashで保存したデータを検索するには

今回の課題はこれです。
まあ後から考えてみれば普通にできたんですけど..
とりあえず記録しておきます。

gem 'ransack'

導入後bundle install をしてサーバーを立ち上げなおしてください。
 

まずアプリケーションコントローラーでこのように定義してください

application_controller.erb

def search
      @search= Pet.ransack(params[:q]) # 検索オブジェクトを生成
      @[email protected]
    end

これで検索をかけています。
キー(:q)を使って、Petテーブルからペットを探しています。
@search= Pet.ransack(params[:q])

search.html.erb
<%= search_form_for @search,url: search_pets_path do |f| %>

<div class="search-field">
        <%= f.label :bleed_id_eq, '種類の選択' %>
        <%= f.collection_select :bleed_id_eq, Bleed.all, :id, :name, include_blank: '指定なし'%>
        </div>

注意 url: search_pets_path これがなかったら エラーがでます

_eqは条件に合った検索を行うためのメゾットになります。
第3引数を:idにするのを間違えないでください。

これでできました。
かなり簡単ですね。w
引数をいろいろ当てはめて探りながらやってたらできました笑