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'
以上。
参考にさせていただいた記事
この記事が気に入ったらサポートをしてみませんか?