Railsでransackを使って検索機能実装

itemname(商品名)カラムを持ったProduct(商品)テーブルがあると想定

1.Gemfileに追記

gem 'ransack'

2.ターミナルでインストール

$ bundle update

3.Controllerに追記

def index
  #(params[:q])に検索パラメーターが入り、Productテーブルを検索する@searchオブジェクトを生成
  @search = Product.ransack(params[:q])

  #検索結果を表示する@resultsオブジェクトを生成
  @results = @search.result
end

4.Viewに追記

#検索フォーム
<%= search_form_for @search do |f| %>
 <div class="form-group">
  #検索対象のカラムを:hoge_contで示す。itemnameだったらitemname_cont
   <%= f.label :itemname_cont, "Name" %>
   <%= f.search_field :itemname_cont, class: "form-control" %>
 </div>
 <div class="actions"><%= f.submit "Search" %></div>
<% end %>

#検索結果
<% if @results.any? %>
 <% @results.each do |result| %>
   <p><%= result.itemname %></p>
 <% end %>
<% end %>

5.routes.rbに追記

get 'hoges/' => 'hoges#index'

以上。

参考にさせていただいた記事




この記事が気に入ったらサポートをしてみませんか?