2016-03-19 8 views
0

Ich möchte alle Elemente finden, wo hat Elementname meine Teilzeichenfolge.Schienen Suche nach Zeichenkette RecordNotFound Fehler Konnte nicht alle Artikel mit 'ID' finden

Das ist mein item.rb

class Item < ActiveRecord::Base 
    def self.search(search) 
    if search 
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 
    else 
    find(:all) 
    end 
end 

end 

Diese meine Suchfunktion im Controller ist:

def search 
    @items=Item.search(params[:word]) 
end 

Und ich bekomme diese Fehlermeldung: konnten nicht alle Artikel mit 'id' gefunden: (alle, {: conditions => [ "? name LIKE", "% xxx%"]}) (0 Ergebnisse gefunden, aber suchte 2)

Extracted source (around line #4): 

    def self.search(search) 
    if search 
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 
    else 
    find(:all) 
    end 

enter image description here

Was soll ich tun?

+0

und auch mindestens einen Artikel mit dem Namen xxx in meiner Datenbank Die moderne Art und Weise, dies auszudrücken, ich habe! – user2950593

+0

Stellen Sie sicher, dass Sie die richtigen Parameter übergeben. Was bekommst du in deiner Suchfunktion, wenn du 'p params.inspect' sagst? – toddmetheny

+0

Wo soll ich diesen params.inspect schreiben? – user2950593

Antwort

3

Die find(:all, :conditions => '...') Syntax wurde in den Schienen 4.1 entfernt. Sie können es wieder mit der activerecord-deprecated_finders hinzufügen, obwohl dies nicht für Schienen 5 aktualisiert wird (zumindest nicht von der Rails-Team).

wäre

where("name like ?", "%#{search}%") 
+0

cool es funktioniert! 2 weitere Fragen: 1) Was ist mit SQL-Injektionen? – user2950593

+0

2) Was ist, wenn ich nichts finde, um eine Ausnahme zu verhindern? – user2950593

+0

gibt es keine Ausnahme cool! Was ist mit SQL-Injektion?) – user2950593

Verwandte Themen