sql >> Databasteknik >  >> RDS >> Mysql

Rails klarar inte DB-frågan på sökformuläret

Är du säker på att du definierade klassmetoden search i item.rb ? För felet säger att det inte finns någon search metod definierad på Item klass. Testa dock om följande fungerar för dig.

Du vill bara söka om formuläret skickas in. Du kan använda present? metod för att veta om söktermen faktiskt godkändes.

Ändra din kontroller till

def index
  @items = params[:search].present? ? Item.search(params[:search]) : Item.all
end

Observera att ett objekt är present bara om det inte är tomt. Detta är praktiskt eftersom om någon skriver " " i formuläret, bör du inte söka efter ett tomt utrymme i nombre men visa alla poster i items bord.

Om formuläret inte skickades, Item.all kommer att köras.

Ändra din klassmetod till

def self.search(search_term)
  where("nombre LIKE ?", "%#{search_term}%")
end

Du behöver ingen Item.where eftersom klassen Item är det aktuella sammanhanget där where metod kallas. Observera att jag har ändrat mönstret till %#{search_term}% eftersom du inte alltid vill matcha strängar som slutar med något mönster.

Hoppas detta hjälper!




  1. Hur man gissar schema i Mysqlinput i farten i Talend

  2. Codeigniter - flera databasanslutningar

  3. MySQL Multiple Where-klausul

  4. MySQL - PHP unika värden från rader