前回は
CRUD機能の基本を作成しました。
https://qiita.com/ksyantaro/private/a76bef5f718d7e2c2e8b
目次
- 検索機能
検索機能
- データベースに保存されている情報の中から、特定の条件に一致するデータを取得する。
- 参照機能(Read)と組み合わせることが多い。
- SQLにおけるWHERE指定のSELECT。
- 一般的に一覧画面に検索フォームを実装する。
- 検索条件をリセットするボタンを作るといい。
gem 'ransack'を使って実装をしていくこともできる
'ransack'は、少ないコードで複雑な検索機能を作成することができる。
【参考記事】
https://www.sejuku.net/blog/100824
今回は手作りフォームで作成
【参考記事】
https://qiita.com/harashoo/items/6c880f8f99e13ed4878f
https://techacademy.jp/magazine/22330
検索フォームの実装
index.html.haml
= form_with url: blogs_path, method: :get, local: true do |f|
= f.text_field :search
= f.submit 'Search'
コントローラの設定
blogs_controller.rb
def index
@blogs = Blog.all
@blogs = @blogs.where('title LIKE ?', "%#{params[:search]}%") if params[:search].present?
end
この時点でタイトルでの検索自体はできる。
一覧表示ページの検索周りの調整
index.html.haml
%h3 タイトル検索
= form_with url: blogs_path, method: :get, local: true do |f|
= f.text_field :search
= f.submit 'Search', name: nil
= link_to "検索終了", blogs_path
少し使いやすいように見た目を変えた。
まとめ
ransackを使わずとも単純な検索機能であれば作成できた。
もっと複雑な検索機能はransackに頼ることになるのでしょうか?