bagaimana cara memasukkan bidang integer dalam pencarian searchkick?

Saya menggunakan kode berikut untuk mencari menggunakan SearchKick:

Book.search(q, 
            misspellings: { below: 5 }, 
            fields: [:name, :author, :pages], 
            order: { name: 'asc' }, 
            page: params[:page], 
            per_page: 20)

Saat saya mencari name dan author berfungsi dengan baik.

Namun, ketika saya mencari 130 untuk page, bidang tersebut tidak dicari.

name dan author adalah bidang string model Buku, dan page adalah bidang bilangan bulat.

Dugaan saya adalah 130 muncul sebagai string, dan salah mencoba mencocokkan bilangan bulat.

Bagaimana caranya agar saya dapat mencari berdasarkan nomor halaman?


person kofhearts    schedule 26.02.2018    source sumber


Jawaban (1)


Sudahkah Anda mencoba menelepon to_i di params[:page]?

Book.search(q, 
            misspellings: { below: 5 }, 
            fields: [:name, :author, :pages], 
            order: { name: 'asc' }, 
            page: params[:page]&.to_i, 
            per_page: 20)

Jika Anda benar dan membandingkan bilangan bulat dengan string, ini akan memperbaikinya.

person SRack    schedule 26.02.2018
comment
maaf saya mencobanya dan tidak berhasil. Saya pergi ke konsol dan hanya mencari Book.search(120, field: [:pages]) dan mengembalikan hasil kosong meskipun ada catatan dengan halaman 120. Mengapa searchkick tidak mencari bidang integer? - person kofhearts; 27.02.2018
comment
Kecuali jika sebaliknya dan mencari string di kedua sisi? Bisakah Anda mencobanya sebentar di konsol Book.search("120", fields: [:pages])? - person SRack; 27.02.2018