Tem certeza de que definiu o método de classe
search em item.rb ? Porque o erro diz que não há search método definido no Item classe. No entanto, tente se o seguinte funcionar para você. Você só deseja pesquisar se o formulário estiver sendo enviado. Você pode usar o
present? método para saber se o termo de pesquisa foi realmente passado. Modifique seu controlador para
def index
@items = params[:search].present? ? Item.search(params[:search]) : Item.all
end
Observe que um objeto está
present somente se não estiver em branco. Isso é útil porque se alguém digitar " " no formulário, você não deve procurar um espaço vazio no nombre mas exibe todos os registros nos items tabela. Se o formulário não foi enviado,
Item.all será executado. Modifique seu método de classe para
def self.search(search_term)
where("nombre LIKE ?", "%#{search_term}%")
end
Você não precisa de um
Item.where porque a classe Item é o contexto atual no qual o where método é chamado. Observe que alterei o padrão para %#{search_term}% porque você nem sempre quer combinar strings que terminam com algum padrão. Espero que isto ajude!