sql >> Databáze >  >> RDS >> Mysql

Rails neprochází dotazem DB na vyhledávacím formuláři

Jste si jisti, že jste definovali metodu třídy search v item.rb ? Protože chyba říká, že neexistuje žádné search metoda definovaná v Item třída. Zkuste však, zda vám následující funguje.

Chcete-li hledat, pouze pokud je formulář odesílán. Můžete použít present? způsob, jak zjistit, zda byl hledaný výraz skutečně předán.

Upravte ovladač na

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

Všimněte si, že objekt je present pouze pokud není prázdný. To je užitečné, protože pokud někdo zadá do formuláře „ “, neměli byste hledat prázdné místo v nombre pole, ale zobrazí všechny záznamy v items tabulka.

Pokud formulář nebyl odeslán, Item.all bude proveden.

Upravte svou metodu třídy na

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

Nepotřebujete Item.where protože třída Item je aktuální kontext, ve kterém je where se nazývá metoda. Všimněte si, že jsem změnil vzor na %#{search_term}% protože nechcete vždy porovnávat řetězce končící nějakým vzorem.

Doufám, že to pomůže!




  1. SQL Server:jak se dotazovat, kdy byla pořízena poslední záloha protokolu transakcí?

  2. Příkazy SELECT mají různý počet sloupců

  3. SQL Server - V klauzule s deklarovanou proměnnou

  4. Jak vytvoříte pole Postgresql JSONB v indexu pole?