はじめに
※すでにアプリケーションがある定で書いてます。
rails
用の検索機能を実装する為のgemになります。
検索キーワードを元に紐付いたデータを取得
逆にキーワードが無い場合は全て取得する。
手順
Gemfileにransack
を記述してbundle install
Gemfile
gem 'ransack'
ターミナル
bundle install
次に
コントローラーにransack
を機能を利用する処理を書きます。
app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
@q = User.ransack(params[:q])
@users = @q.result
#resultメソッドで結果を返します
end
end
次に
ビューファイルに検索フォームを書きます。
ransack
を使用した検索フォームはsearch_form_for
というヘルパーメソッド を使います。
app/views/users/index.html.erb
<%= search_form_for @q do |f| %>
<div class="d-flex">
<div class="form-group flex-grow-1">
#検索窓
<%= f.search_field :name_cont, placeholder: "〇〇を探す", class: "form-control" %>
</div>
<div>
#検索
<%= f.submit "検索", class: "btn btn-primary ml-1" %>
</div>
</div>
<% end %>
今回は「部分一致検索」が目的の為カラム名_cont
にしています。
「一致検索」の場合は,カラム名_eq
とします。
検索機能完成
※Qiiteに動画のアップロード初めてでしたが、上手く行きました!
この記事には関係ありませんが参考になりました!
https://qiita.com/bohebohechan/items/f8bf6d4bbe0f14497a7b
終わりに
ざっくりとした内容になりましたが、
結論画期的なgemを作って下さった技術者に感謝です!