def index
@users = users(params[:query]).order(name: :asc).page(params[:page])
render partial: "paginated_users" if request.headers["HX-Request"]
end
def users(query)
return User.all if query.blank?
User.where(["username ILIKE :query OR name ILIKE :query", query: "%#{query}%"])
end
<div>
<input class="text-lg"
type="text"
name="query"
value="<%= params[:query] %>"
placeholder="Search by name or username..."
hx-get="<%= users_path %>"
hx-trigger="keyup changed delay:500ms"
hx-target="#paginated_users"
hx-push-url="true" />
</div>
<div id="paginated_users" class="space-y-6">
<%= render "paginated_users" %>
</div>
Martin Sojka, Maker of CodeSnips