Mysql
 sql >> база данни >  >> RDS >> Mysql

Релсите не предават DB Query във формуляра за търсене

Сигурни ли сте, че сте дефинирали метода на класа search в item.rb ? Защото грешката казва, че няма search метод, дефиниран в Item клас. Все пак опитайте дали следното работи за вас.

Искате да търсите само ако формулярът се изпраща. Можете да използвате present? метод, за да разберете дали думата за търсене действително е била предадена.

Променете вашия контролер на

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

Обърнете внимание, че даден обект е present само ако не е празно. Това е удобно, защото ако някой въведе „ “ във формуляра, не трябва да търсите празно място в nombre поле, но показват всички записи в items таблица.

Ако формулярът не е изпратен, Item.all ще се изпълни.

Променете метода на вашия клас на

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

Нямате нужда от Item.where защото класът Item е текущият контекст, върху който where методът се нарича. Имайте предвид, че промених модела на %#{search_term}% защото не винаги искате да съпоставяте низове, завършващи с някакъв шаблон.

Надявам се това да помогне!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Направете еднократна заявка към различна база данни и таблица

  2. как да проверя низ, присъстващ в колоната на базата данни?

  3. Какво означава/се случва при използване на `INNER JOIN` с множество изрази за таблица на база данни?

  4. PHP PDO MySQL и как наистина се справя с MySQL транзакциите?

  5. MySQL Изберете 3 произволни реда, където сумата от три реда е по-малка от стойността