Êtes-vous sûr d'avoir défini la méthode de classe search
dans item.rb
? Parce que l'erreur indique qu'il n'y a pas de search
méthode définie sur le Item
classer. Cependant, essayez si ce qui suit fonctionne pour vous.
Vous ne souhaitez rechercher que si le formulaire est en cours de soumission. Vous pouvez utiliser le present?
méthode pour savoir si le terme de recherche a bien été passé.
Modifiez votre manette pour
def index
@items = params[:search].present? ? Item.search(params[:search]) : Item.all
end
Notez qu'un objet est present
seulement si ce n'est pas vide. C'est pratique car si quelqu'un entre " " dans le formulaire, il ne faut pas chercher un espace vide dans le nombre
champ mais affiche tous les enregistrements dans les items
tableau.
Si le formulaire n'a pas été soumis, Item.all
sera exécuté.
Modifiez votre méthode de classe en
def self.search(search_term)
where("nombre LIKE ?", "%#{search_term}%")
end
Vous n'avez pas besoin d'un Item.where
car la classe Item
est le contexte courant sur lequel le where
méthode est appelée. Notez que j'ai changé le modèle en %#{search_term}%
car vous ne voulez pas toujours faire correspondre les chaînes se terminant par un motif.
J'espère que cela vous aidera !