sql >> Database >  >> RDS >> Mysql

Rails passeren de DB Query niet op zoekformulier

Weet je zeker dat je de klassenmethode search hebt gedefinieerd? in item.rb ? Omdat de fout zegt dat er geen search is methode gedefinieerd op het Item klas. Probeer echter of het volgende voor u werkt.

U wilt alleen zoeken als het formulier wordt verzonden. Je kunt het present? . gebruiken methode om te weten of de zoekterm daadwerkelijk is doorgegeven.

Wijzig uw controller in

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

Merk op dat een object present is alleen als het niet leeg is. Dit is handig, want als iemand " " in het formulier invoert, moet u niet zoeken naar een lege ruimte in de nombre veld maar toon alle records in de items tafel.

Als het formulier niet is ingediend, Item.all zal worden uitgevoerd.

Pas uw klasmethode aan naar

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

Je hebt geen Item.where nodig omdat de klasse Item is de huidige context waarop de where methode wordt genoemd. Merk op dat ik het patroon heb gewijzigd in %#{search_term}% omdat je strings die eindigen op een bepaald patroon niet altijd wilt matchen.

Ik hoop dat dit helpt!




  1. Tabelfout maken - Oracle SQL

  2. Strategie om meerdere bestanden in een enkele tabel toe te wijzen aan een enkel veld in een andere tabel

  3. Invoegen IN MySQL VANAF een andere tabel

  4. MySQL Stored Procedure aanroepen met VB6 met OUT-parameter