[RUBY] Mode API Rails J'ai essayé d'implémenter la fonction de recherche multiple par mot-clé à l'aide de tableaux et d'un traitement itératif.

Avant que cela ne devienne une fonction

def keyword
    if params[:keyword]
      keywords = params[:keyword].split(/[[:blank:]]+/).select(&:present?)
      keywords.each do |keyword|
        offices = Office.where('name LIKE ? OR address LIKE ? OR near_station LIKE ? OR introduction LIKE ? OR company LIKE ?',"%#{keyword}%", "%#           {keyword}%", "%#{keyword}%", "%#{keyword}%", "%#{keyword}%")
      end
    else
      pagy, offices = pagy(Office.all)
      pagy_headers_merge(pagy)
    end
    render json: offices, each_serializer: OfficeIndexSerializer, include: '**'
  end

J'errais avec une telle description. La raison est qu'il est possible de rechercher avec un seul mot, mais avec plusieurs mots-clés (par exemple, avec une méthode de recherche telle que "Tokyo Fukuoka", il était possible de rechercher uniquement avec le mot Fukuoka.

Ce qui m'intéressait

Code final

  def keyword
    if params[:city_id]
      offices = Office.where(city_id: params[:city_id])
    elsif params[:keyword]
      keywords = params[:keyword].split(/[[:blank:]]+/).select(&:present?)
      offices = []
      keywords.each do |keyword|
        offices += Office.where('name LIKE (?) OR address LIKE (?) OR near_station LIKE (?) OR introduction LIKE (?) OR company LIKE (?)',"%#{keyword}%", "%#{keyword}%", "%#{keyword}%", "%#{keyword}%", "%#{keyword}%")
      end
    else
      pagy, offices = pagy(Office.all)
      pagy_headers_merge(pagy)
    end
    render json: offices
  end

Comme point étrange, j'ai ajouté ʻoffices = [] . Une image de la création d'une boîte pour stocker des mots-clés. Ensuite, j'ai ajouté () à ʻoffice + = Office.where`` et? Dans la clause where.

En conséquence, il a été possible d'établir une fonction de recherche non seulement pour une recherche par mot-clé à un seul mot comme "Tokyo", mais aussi pour plusieurs mots-clés tels que "Tokyo Fukuoka Chiba".

Recommended Posts

Mode API Rails J'ai essayé d'implémenter la fonction de recherche multiple par mot-clé à l'aide de tableaux et d'un traitement itératif.
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
[API] J'ai essayé d'utiliser l'API de recherche par code postal
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
J'ai essayé d'implémenter la fonction similaire par communication asynchrone
[Rails] J'ai essayé d'implémenter le traitement par lots avec la tâche Rake
J'ai essayé d'implémenter le modèle Iterator
J'ai essayé de résumer l'API Stream
[Rails] J'ai essayé d'implémenter une transaction qui combine plusieurs processus DB
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
J'ai essayé d'organiser la session en Rails
Comment mettre en œuvre la fonction de chapelure avec Gretel
J'ai essayé d'implémenter un serveur en utilisant Netty
[Rails] Comment se connecter à une API externe à l'aide du client HTTP (j'ai essayé de me connecter à l'API Qiita)
Je veux accéder à l'API avec Rails sur plusieurs docker-composes configurés localement
J'ai essayé d'utiliser la fonction Server Push de Servlet 4.0
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
[Rails 6.0, Docker] J'ai essayé de résumer la construction de l'environnement Docker et les commandes nécessaires pour créer un portfolio
J'ai essayé un test unitaire de l'application Rails en utilisant RSpec et FactoryBot
[Rails] J'ai essayé d'utiliser la méthode button_to pour la première fois
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
J'ai essayé de résumer les bases de kotlin et java
[Rails] Fonction de recherche et de liste de produits à partir de catégories à plusieurs niveaux
J'ai essayé de construire l'environnement petit à petit en utilisant docker
Fonction de recherche à l'aide de [rails] ransack
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
Implémentez une fonction de recherche affinée pour plusieurs modèles sans gemme Rails5.
J'ai essayé d'intégrer parfaitement Docker et Maven / Netbean en utilisant Jib
[Rubiy] J'ai essayé de résumer le traitement de la boucle ce soir [fois, pause ...]
J'ai essayé d'utiliser la fonction de cache d'Application Container Cloud Service
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie
J'ai essayé de résumer les méthodes de Java String et StringBuilder
J'ai essayé d'afficher le calendrier sur la console Eclipse en utilisant Java.
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
[Rails] J'écrirai très attentivement le mécanisme et la méthode d'utilisation de payjp (API) (enregistrement Kureka)
J'ai essayé d'expliquer la méthode
J'ai essayé d'utiliser l'API Java8 Stream
J'ai résumé les points à noter lors de l'utilisation combinée des ressources et des ressources
Comment mettre en œuvre un diaporama en utilisant Slick in Rails (un par un et plusieurs par un)
[Rails] J'étais accro aux paramètres nginx lors de l'utilisation d'Action Cable.
J'ai présenté WSL2 + Ubuntu à Window10 et essayé d'utiliser GDC, DMD, LDC
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
[Rails] Je vais expliquer la procédure d'implémentation de la fonction follow en utilisant form_with.