#はじめに
今回はあいまい検索(ぴったり文字があっていなくても検索結果でますよ)のやり方を書いていきます
参考程度にどうぞ〜。今回はProductテーブルにある商品名の検索をしていきます。
読んだらいいねいただけると嬉しいです!!!モチベになります!!!!
#検索フォーム
まずは検索のフォームを作成しましょう。
場所はどこでもよいです。どのコントローラーのどのアクションでも良いです。
入力した文字列をsearchというネームでsearches#indexに送信しています。
.fuzzy_search
= form_tag(searches_path,method: :get) do
= text_field_tag :search, "",placeholder:"何かお探しですか?"
= submit_tag 'search', :name => nil
#コントローラー/ルーティング/ビューの作成
①searchesコントローラーの作成
rails g controller searches
②ルーティングの設定
indexアクションで検索したレコードを表示します。
resources :searches,only:[:index]
③メソッドの作成
Productテーブルのnameカラムでの検索を想定しています。
他のカラムの文字列を参照する場合は"name"の部分を変更してください。
def self.search(search)
return Product.all unless search
Product.where(['name LIKE ?', "%#{search}%"])
end
④searchesコントローラーのアクション
@productsに検索に合致した値を代入しています。
@searchに検索した文字列を代入しています。
def index
@products = Product.search(params[:search]).limit(132)
@search = params[:search]
end
⑤ビューの作成
render @productsは部分テンプレートを用いています。
任意のビューを作成ください。
以下は例です。
.search
.search-container
.search-left
= render 'searches/form-bar'
.search-right
%section.items-box-container
-if @search.present?
%h2.search-result-head
=@search
%span.search-result-head-text
の検索結果
.search-result-number
="1-#{@products.count}件表示"
-else
%h2.search-result-nil
新着商品
.items-box-content
= render @products
#おわりに
今回はあいまい検索のやり方を記載しました。
次回はransackを用いた詳細検索を記事にします。よろしくお願いします。
https://qiita.com/nakanishi03/items/2fbcc8ba06b336291321
では