Apakah Anda yakin Anda mendefinisikan metode kelas search
di item.rb
? Penyebab kesalahan mengatakan bahwa tidak ada search
metode yang ditentukan pada Item
kelas. Namun, coba jika yang berikut ini cocok untuk Anda.
Anda hanya ingin mencari jika formulir sedang dikirimkan. Anda dapat menggunakan present?
metode untuk mengetahui apakah istilah penelusuran benar-benar lulus.
Ubah pengontrol Anda menjadi
def index
@items = params[:search].present? ? Item.search(params[:search]) : Item.all
end
Perhatikan bahwa suatu objek present
hanya jika tidak kosong. Ini berguna karena jika seseorang memasukkan " " dalam formulir, Anda tidak boleh mencari ruang kosong di nombre
tetapi tampilkan semua catatan dalam items
tabel.
Jika formulir tidak dikirimkan, Item.all
akan dieksekusi.
Ubah metode kelas Anda menjadi
def self.search(search_term)
where("nombre LIKE ?", "%#{search_term}%")
end
Anda tidak memerlukan Item.where
karena kelas Item
adalah konteks saat ini di mana where
metode disebut. Perhatikan bahwa saya telah mengubah polanya menjadi %#{search_term}%
karena Anda tidak selalu ingin mencocokkan string yang diakhiri dengan beberapa pola.
Semoga ini bisa membantu!