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.
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.
/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.
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.
: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.
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