[RUBY] Fügen Sie eine Suchfunktion in Rails hinzu.

Überblick

Die Möglichkeit, innerhalb einer Anwendung nach Daten zu suchen, ist für Benutzer bei der Suche nach Daten hilfreich. Da die Suchfunktion eine übliche Funktion in SNS usw. ist, implementieren wir die Suchfunktion tatsächlich. Wenn es eine Tabelle mit dem Namen user gibt, implementieren Sie eine Funktion zur Suche nach user.

1. Routing-Einstellungen

Es wird davon ausgegangen, dass UserModel und UsersController, die den Benutzer behandeln, erstellt wurden.

/config/routes.rb


#Kürzung
  resources :users do
    get "search", on: :collection
  end

Die Suchaktion fügt on :: collection hinzu, um eine Sammlung von Ressourcen darzustellen.

2. Fügen Sie dem Modell die Suche nach Klassenmethoden hinzu

/app/model/user.rb


class User < ApplicationRecord
  class << self
    def search(query)
      rel = order("id")
      if query.present?
        rel = rel.where("Spaltenname LIKE?, "%#{query}%")
      end
      rel
    end
  end
end

Sie können Klassenmethoden mit der Klasse << self ~ end definieren. Definieren Sie die lokale Variable rel. Wenn das Suchwort nicht leer ist, verwenden Sie SQL LIKE, um den Zieldatensatz aus der entsprechenden Spalte einzugrenzen.

3. Fügen Sie dem Controller eine Suchaktion hinzu

app/controllers/users_controller.rb


#Kürzung
def search
  @users = User.search(params[:q])
  render "index"
end

Hier wird die im Benutzermodell definierte Klassenmethoden-Suche verwendet.

4. Füllen Sie das angezeigte Formular aus

:app/views/users/index.html.erb


#Kürzung
<%= form_tag :search_users, method: :get, class: "search" do %>
  <%= text_field_tag "q", params[:q] %>
  <%= submit_tag "Suche" %>
<% end %>

form_tag erstellt ein Formular mit einem Pfad als Argument. Da die Standardmethode POST ist, wird die Methode get angegeben. Mit text_field_tag wird ein Formular erstellt, und im zweiten Argument wird params [: q] angegeben, damit das Suchwort "q" auch nach der Suche im Formular verbleibt.

Zusammenfassung

Jetzt können Sie die Suchfunktion implementieren. Es gab auch einen Teil, der sich mit SQL befasste, daher möchte ich diese Gelegenheit nutzen, um zu studieren.

Recommended Posts

Fügen Sie eine Suchfunktion in Rails hinzu.
Tag-Funktion zu Rails hinzufügen. Verwenden Sie Acts-as-Taggable-On
Lassen Sie uns eine Suchfunktion mit Rails (Ransack) machen
Implementieren Sie die Anwendungsfunktion in Rails
Implementierung der Fuzzy-Suchfunktion für Schienen
[Schienen] Implementieren Sie die Benutzersuchfunktion
Suchfunktion mit [Rails] Ransack
[Rails] Erstellen eines Suchfelds
So schreiben Sie eine Datumsvergleichssuche in Rails
Ich möchte eine Funktion in der Rails Console definieren
Implementieren Sie eine einfache Anmeldefunktion in Rails
Erstellen Sie eine neue App mit Rails
Implementieren Sie ein Kontaktformular in Rails
Bereitstellen einer Suchleiste in Rails ~ Führen Sie eine Suche durch, indem Sie mehrere Tabellen verbinden
Implementieren Sie die CSV-Download-Funktion in Rails
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
Implementieren Sie eine verfeinerte Suchfunktion für mehrere Modelle ohne Rails5-Juwel.
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
[Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails
[Ruby on Rails] Suchfunktion (nicht ausgewählt)
Führen Sie eine Präfixsuche in Swifts Firestore durch
So implementieren Sie Suchfunktionen in Rails
[Rails] Funktionseinschränkungen im Gerät (Login / Logout)
So fügen Sie ein Video in Rails ein
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
Erstellen Sie trotzdem eine Anmeldefunktion mit Rails
Zugabe von bind.pry (Schienen)
[Schienen] Kategoriefunktion
Group_by in Rails
Schienen folgen der Funktion
Erstellen Sie eine Bulletin Board-API mit Zertifizierungsberechtigung in Rails 6 # 13 Grant-Authentifizierungsheader
[Rails] Benachrichtigungsfunktion
[Rails] Implementierung der Suchfunktion mit Gem's Ransack
Fügen Sie .gitignore hinzu, wenn Sie ein Projekt in Xcode erstellen
Mit Rails in eine Tag-zu-URL-Zeichenfolge konvertieren
Buchungsfunktion implementiert durch asynchrone Kommunikation in Rails
Implementieren Sie die Sternebewertungsfunktion mit Raty in Rails 6
So fügen Sie in Spring Boot einen Klassenpfad hinzu
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Rails Logger Machen Sie sich in 1 Minute eine ungefähre Vorstellung
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
So implementieren Sie eine ähnliche Funktion in Rails
So erstellen Sie einfach ein Pulldown mit Rails
Fügen Sie mit Gradle ein Projekt in einen beliebigen Ordner ein
(Ruby on Rails6) Erstellen von Daten in einer Tabelle
Einfache Benachrichtigungsfunktion in Rails (nur wenn befolgt)
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 17. Fügen Sie Administratorrechte hinzu