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
Ich bin mit einer solchen Beschreibung herumgewandert. Der Grund ist, dass es möglich ist, mit einem Wort zu suchen, aber mit mehreren Schlüsselwörtern (zum Beispiel einer Suchmethode wie "Tokyo Fukuoka" war es möglich, nur mit dem Wort Fukuoka zu suchen.
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
Was sich geändert hat, ist, dass wir "Büros = []" hinzugefügt haben. Ein Bild von einer Box zum Speichern von Schlüsselwörtern.
Dann habe ich () zu office + = Office.where
und? In der where-Klausel hinzugefügt.
Infolgedessen konnte eine Suchfunktion nicht nur für eine Einzelwort-Stichwortsuche wie "Tokyo", sondern auch für mehrere Stichwörter wie "Tokyo Fukuoka Chiba" eingerichtet werden.
Recommended Posts