2016-08-30 4 views
0

Diese seltsam ist, passiert es mir nie vorSQL LIKE-Such Fehler nur auf einer Zeile der Tabelle

Im auf den Schienen Konsole, weil meine Suchformular nicht funktioniert, aus irgendeinem Grund, wenn ich eine Suche mit die Reihe ‚nombre‘, die Suche nicht funktioniert genannt, ist dies die Ausgangsdaten:

zuerst werde ich Ihnen meine Tabellendaten zeigen:

2.3.0 :035 > Item.all 
Item Load (0.6ms) SELECT "items".* FROM "items" 
    => #<ActiveRecord::Relation [#<Item id: 1, nombre: "Melamina Blanca",   espesor: 18, material: "MDF", quantity: 14, created_at: "2016-08-04 00:56:13", updated_at: "2016-08-30 00:05:01">, #<Item id: 2, nombre: "Melamina Gris Grafito", espesor: 15, material: "Aglo", quantity: 9, created_at: "2016-08-04 00:56:13", updated_at: "2016-08-30 00:05:01">, #<Item id: 3, nombre: "Melamina Azul", espesor: 18, material: "MDF", quantity: 26, created_at: "2016-08-04 00:56:13", updated_at: "2016-08-30 00:05:01">, #<Item id: 4, nombre: "Melamina Rojs", espesor: 18, material: "MDF", quantity: 5, created_at: "2016-08-04 00:56:13", updated_at: "2016-08-30 00:05:01">]> 
2.3.0 :036 > 

so wie Sie, das erste Element sehen, die Name (nombre) ist "Melamina Blanca"

Wenn ich die Suche zu tun, erhalte ich folgende:

item = Item.where("nombre LIKE ?", "Blanca") 
    Item Load (0.8ms) SELECT "items".* FROM "items" WHERE (nombre LIKE 'Blanca') 
    => #<ActiveRecord::Relation []> 

Also habe ich versucht, durch eine andere Reihe, zu diesem Fall genannt

item = Item.where("material LIKE ?", "Aglo") 
    Item Load (0.5ms) SELECT "items".* FROM "items" WHERE (material LIKE 'Aglo') 
    => #<ActiveRecord::Relation [#<Item id: 2, nombre: "Melamina Gris Grafito", espesor: 15, material: "Aglo", quantity: 9, created_at: "2016-08-04 00:56:13", updated_at: "2016-08-30 00:05:01">]> 

‚Material‘ suchen erhalte ich eine richtige Suche, ich versucht mit den anderen Zeilen und alle von ihnen arbeiten, mit Ausnahme der, die ich brauche, die 'nombre' ist

Irgendwelche Ideen warum?

+1

@freciaj, Hast du 'Item.where (" nombre LIKE? ","% Blanca% ")' '? –

+0

Was ist die Fehlermeldung? –

+0

@DennySutedja Ich denke, dass sie meinen, dass sie einen "Logikfehler" anstelle eines 'Syntaxfehlers kobaltz

Antwort

0

Ich denke, das Problem ist, dass Sie nach einer genauen Übereinstimmung suchen. Um nach einer Musterzeichenfolge zu suchen, müssen Sie % verwenden, das Platzhalter definiert.

Versuchen

Item.where("nombre LIKE ?", "%Blanca%") 

Diese für Datensätze mit Namen sucht, die "Blanca" in ihm enthalten.

Wenn Sie nach Namen suchen möchten, die mit "Blanca" zu starten, verwenden

Item.where("nombre LIKE ?", "Blanca%") 

Oder Namen mit "Blanca" endet,

Item.where("nombre LIKE ?", "%Blanca") 

verwenden Hinweis: Ihre Suche über material "Aglo" war erfolgreich, weil das Feld material im Datensatz die genaue Zeichenfolge "Aglo" enthielt.

Hoffe, das hilft!

+0

Sie haben es genagelt! Ich muss immer noch herausfinden, warum auf Schienen nicht die Suche an die DB, es zeigt mir die Params mit den Daten, aber dann es macht nicht die DB Suche – frenciaj

+0

@frenciaj, es macht nicht die db Suche? Sehen Sie in den Serverprotokollen nach, ob die Abfrage tatsächlich an die Datenbank gesendet wurde. –

+0

Nein, es ist nicht die Abfrage übergeben, es zeigt mir die Parameter aber dann gibt es keine Abfrage mit dieser Suche, ich kopierte genau die Railcasts für die einfache Form, ich verstehe nicht, was falsch ist ... – frenciaj

Verwandte Themen