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!