Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Railsy nie przekazują zapytania DB w formularzu wyszukiwania

Czy na pewno zdefiniowałeś metodę klasy search? w item.rb ? Ponieważ błąd mówi, że nie ma search metoda zdefiniowana w Item klasa. Spróbuj jednak, jeśli poniższe rozwiązanie działa dla Ciebie.

Chcesz tylko sprawdzić, czy formularz jest przesyłany. Możesz użyć present? metoda, aby dowiedzieć się, czy wyszukiwane hasło zostało rzeczywiście przekazane.

Zmodyfikuj kontroler na

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

Zauważ, że obiekt jest present tylko jeśli nie jest puste. Jest to przydatne, ponieważ jeśli ktoś wpisze „ ” w formularzu, nie powinieneś szukać pustego miejsca w nombre pole, ale wyświetl wszystkie rekordy w items tabela.

Jeśli formularz nie został przesłany, Item.all zostanie wykonany.

Zmień metodę klasy na

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

Nie potrzebujesz Item.where ponieważ klasa Item jest bieżącym kontekstem, w którym where wywoływana jest metoda. Zauważ, że zmieniłem wzorzec na %#{search_term}% ponieważ nie zawsze chcesz dopasowywać ciągi kończące się jakimś wzorem.

Mam nadzieję, że to pomoże!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# Błąd MySQL Liczba kolumn nie odpowiada liczbie wartości w wierszu 1

  2. Jak skonfigurować Django używając pymysql jako sterownika?

  3. Połącz się z MySQL za pomocą JDBC przez sieć

  4. mysql wybierz liczbę rekordów dla każdego miesiąca

  5. Wydajność CASE w MySQL?