Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Rails không chuyển Truy vấn DB trên biểu mẫu tìm kiếm

Bạn có chắc mình đã xác định phương thức lớp search trong item.rb ? Nguyên nhân do lỗi thông báo rằng không có search phương thức được xác định trên Item lớp. Tuy nhiên, hãy thử nếu cách sau phù hợp với bạn.

Bạn chỉ muốn tìm kiếm nếu biểu mẫu đang được gửi. Bạn có thể sử dụng present? để biết liệu cụm từ tìm kiếm có thực sự được chuyển qua hay không.

Sửa đổi bộ điều khiển của bạn thành

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

Lưu ý rằng một đối tượng là present chỉ khi nó không trống. Điều này rất hữu ích vì nếu ai đó nhập "" vào biểu mẫu, bạn không nên tìm kiếm khoảng trống trong nombre nhưng hiển thị tất cả các bản ghi trong các mục items bảng.

Nếu biểu mẫu không được gửi, Item.all sẽ được thực thi.

Sửa đổi phương thức lớp của bạn thành

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

Bạn không cần Item.where vì lớp Item là ngữ cảnh hiện tại mà where phương thức được gọi. Lưu ý rằng tôi đã thay đổi mẫu thành %#{search_term}% vì bạn không phải lúc nào cũng muốn khớp các chuỗi kết thúc bằng một số mẫu.

Hy vọng điều này sẽ hữu ích!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MyCLI - Ứng dụng khách MySQL / MariaDB với tính năng Tự động hoàn thành và tô sáng cú pháp

  2. Bỏ qua một số bảng nhất định với mysqldump

  3. làm thế nào để sử dụng hàm mysql now () trong cakephp cho các trường ngày tháng?

  4. Chart.js v2.6:Thêm mũi tên vào giá trị đầu ra của biểu đồ hình tròn

  5. Lỗi phân tích cú pháp:lỗi cú pháp, lỗi '=' không mong muốn