LoginSignup
1
1

More than 3 years have passed since last update.

【Rails】アプリ開発の流れ③【検索機能】

Last updated at Posted at 2020-08-31

前回は

CRUD機能の基本を作成しました。
https://qiita.com/ksyantaro/private/a76bef5f718d7e2c2e8b

目次

  1. 検索機能

検索機能

  • データベースに保存されている情報の中から、特定の条件に一致するデータを取得する。
  • 参照機能(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に頼ることになるのでしょうか?

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1