今回はransackを使用して、検索機能を実装したのですが
少しだけ悩んだところがあったので抜粋して書きます。
##ActiveHashで保存したデータを検索するには
今回の課題はこれです。
まあ後から考えてみれば普通にできたんですけど..
とりあえず記録しておきます。
gem 'ransack'
導入後bundle install をしてサーバーを立ち上げなおしてください。
まずアプリケーションコントローラーでこのように定義してください
application_controller.erb
def search
@search= Pet.ransack(params[:q]) # 検索オブジェクトを生成
@pets=@search.result
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
引数をいろいろ当てはめて探りながらやってたらできました笑