User Live Search with Stimulus, Turbo Frames and PgSearch

Curated ago by @jeremysmithco

Description

Here’s a solution I’ve used on a project to add a user switcher dropdown with typeahead search to a navbar. It uses the pg_search gem for Postgres full-text search.

There are a lot of blog posts out there with similar solutions, with terms like: typeahead, autocomplete, autosuggest, instant search.

1
2
3
4
5
6
7
8
9
10
11
12
13
class User < ApplicationRecord
  include PgSearch::Model

  pg_search_scope(
    :user_search,
    against: { first_name: "A", last_name: "A" },
    using: { tsearch: { prefix: true, dictionary: "english" } }
  )

  def full_name
    [first_name, last_name].compact_blank.join(" ")
  end
end