La possibilité de rechercher des données dans une application est utile pour les utilisateurs lors de la recherche de données. Puisque la fonction de recherche est une fonction courante dans SNS, etc., implémentons la fonction de recherche. S'il existe une table appelée user, implémentez une fonction pour rechercher l'utilisateur.
Il est supposé que UserModel et UsersController qui gèrent l'utilisateur ont été créés.
/config/routes.rb
#réduction
resources :users do
get "search", on: :collection
end
L'action de recherche ajoute on :: collection pour représenter une collection de ressources.
/app/model/user.rb
class User < ApplicationRecord
class << self
def search(query)
rel = order("id")
if query.present?
rel = rel.where("Nom de colonne LIKE?, "%#{query}%")
end
rel
end
end
end
Vous pouvez définir des méthodes de classe avec la classe << self ~ end. Définissez la variable locale rel, et si le mot recherché n'est pas vide, utilisez SQL LIKE pour restreindre l'enregistrement cible à partir de la colonne correspondante.
app/controllers/users_controller.rb
#réduction
def search
@users = User.search(params[:q])
render "index"
end
La recherche de méthode de classe définie dans le modèle User est utilisée ici.
:app/views/users/index.html.erb
#réduction
<%= form_tag :search_users, method: :get, class: "search" do %>
<%= text_field_tag "q", params[:q] %>
<%= submit_tag "Chercher" %>
<% end %>
form_tag crée un formulaire avec un chemin comme argument. La méthode par défaut étant POST, la méthode get est spécifiée. Un formulaire est créé avec text_field_tag et params [: q] est spécifié dans le deuxième argument de sorte que le mot de recherche "q" reste dans le formulaire même après la recherche.
Vous pouvez maintenant implémenter la fonction de recherche. Il y avait aussi une partie traitant de SQL, je voudrais donc profiter de cette occasion pour étudier.
Recommended Posts