Ä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!