Er du sikker på, at du har defineret klassemetoden search i item.rb ? Fordi fejlen siger, at der ikke er nogen search metode defineret på Item klasse. Prøv dog, om følgende virker for dig.
Du ønsker kun at søge, hvis formularen indsendes. Du kan bruge present? metode til at vide, om søgetermen faktisk blev bestået.
Rediger din controller til
def index
@items = params[:search].present? ? Item.search(params[:search]) : Item.all
end
Bemærk, at et objekt er present kun hvis det ikke er tomt. Dette er praktisk, fordi hvis nogen indtaster " " i formularen, skal du ikke søge efter et tomt felt i nombre felt, men vis alle posterne i items tabel.
Hvis formularen ikke blev indsendt, Item.all vil blive udført.
Rediger din klassemetode til
def self.search(search_term)
where("nombre LIKE ?", "%#{search_term}%")
end
Du behøver ikke en Item.where fordi klassen Item er den aktuelle kontekst, hvorpå where metode kaldes. Bemærk, at jeg har ændret mønsteret til %#{search_term}% fordi du ikke altid ønsker at matche strenge, der ender med et eller andet mønster.
Håber dette hjælper!