[RUBY] Ajoutez une fonction de recherche dans Rails.

Aperçu

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.

1. Paramètres de routage

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.

2. Ajouter la recherche de méthode de classe au modèle

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

3. Ajouter une action de recherche au contrôleur

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.

4. Remplissez le formulaire en vue

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

Sommaire

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

Ajoutez une fonction de recherche dans Rails.
Ajoutez une fonction de balise aux rails. Utilisez actes-comme-taggable-on
Faisons une fonction de recherche avec Rails (ransack)
Implémenter la fonction d'application dans Rails
Implémentation de la fonction de recherche floue Rails
[Rails] Implémenter la fonction de recherche d'utilisateurs
Fonction de recherche à l'aide de [rails] ransack
[Rails] Création d'un champ de recherche
Comment écrire une recherche de comparaison de dates dans Rails
Je souhaite définir une fonction dans la console Rails
Implémenter une fonction de connexion simple dans Rails
Créer une nouvelle application avec Rails
Implémenter un formulaire de contact dans Rails
Fournir une barre de recherche dans Rails ~ Effectuer une recherche en joignant plusieurs tables
Implémenter la fonction de téléchargement CSV dans Rails
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
Implémentez une fonction de recherche affinée pour plusieurs modèles sans gemme Rails5.
Je souhaite ajouter une fonction de navigation avec ruby on rails
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
[Procédure d'implémentation] Créer une fonction d'authentification utilisateur à l'aide de sorcellerie dans Rails
[Ruby on Rails] Fonction de recherche (non sélectionnée)
Effectuez une recherche de préfixe dans Swift's Firestore
Comment implémenter la fonctionnalité de recherche dans Rails
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
Comment insérer une vidéo dans Rails
[Retrait des rails] Créez une fonction de retrait simple avec des rails
Créez quand même une fonction de connexion avec Rails
Ajout de binding.pry (rails)
[Rails] Fonction de catégorie
Group_by dans Rails
Les rails suivent la fonction
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 13 Accorder l'en-tête d'authentification
[Rails] Fonction de notification
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
Ajouter .gitignore lors de la création d'un projet dans Xcode
Convertir en balise dans la chaîne d'URL avec Rails
Fonction de publication implémentée par communication asynchrone dans Rails
Mettre en œuvre la fonction de classement par étoiles en utilisant Raty dans Rails 6
Comment ajouter un chemin de classe dans Spring Boot
[Rails] J'ai créé une fonction de brouillon en utilisant enum
Enregistreur de rails Obtenez une idée approximative en 1 minute
Comment ajouter conditionnellement une classe html.erb dans Rails
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
Ajouter un projet dans n'importe quel dossier avec Gradle
(Ruby on Rails6) Création de données dans une table
Fonction de notification simple dans Rails (uniquement lorsqu'elle est suivie)
Créez une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 17 Ajoutez des privilèges d'administrateur