2016-06-14 20 views
0

Ich verwende Rails 4, eine MySQL-Datenbank und jQuery Datatables 1.10. Ich habe eine Suchfunktion, die funktioniert, aber gibt mehr Ergebnisse zurück, als ich möchte.So suchen Sie nach exakter Übereinstimmung

Wenn ich zum Beispiel nach "Phase I" suche, werden Ergebnisse mit den Feldern "Phase I", "Phase II" oder "Phase III" zurückgegeben, weil "Phase II" und "Phase III" beide enthalten Phase I".

Dies ist die Abfrage:

table = table.where("col_name like :search", search: "%#{query}%") 

Wie kann ich diese Suche nur return "Phase I" ändern und nicht die "Phase II" oder "Phase III"?

+1

Warum suchen Sie für Tabellen, die Spalten passende bestimmte Zeichenfolgen haben ? Weißt du nicht, welche Tabellen sie haben? Dies scheint ein [XY-Problem] zu sein (http://meta.stackexchange.com/a/66378/153968). –

+0

versuchen, nur Abfrage anstelle von "% # {query}%" – chaitanya

Antwort

0

Ihre Anfrage würde

Table.where(col_name: query) 

sein, dass Sie eine genaue Übereinstimmung

+0

Sorry, aber das funktioniert nicht, bekomme ich den folgenden Fehler: 'Syntax Fehler, unerwartet ':', erwartet ')'' –

+0

Sorry zu sagen, Wenn die obige Lösung für Sie funktioniert, dann würde auch meine Lösung funktionieren und der angezeigte Fehler würde nichts mit meiner Lösung zu tun haben. Um vor SQL-Injection mit Ihrem Ansatz zu schützen, würde ich empfehlen, dass Sie Parameter binden, z. B. 'table = table.where (" col_name =? ", Query)' – oreoluwa

0

Diese Lösung funktionierte für mich geben sollte:

table = table.where("col_name = '#{query}'") 
Verwandte Themen