我使用'will-paginate'gem來使用分頁。下面的這段代碼工作得很好。雖然我在WHERE子句中使用了相同的字符串,但爲什麼不能分頁?
@cafe = Cafe.where('id = 7 or id = 6 or id = 3 or id = 2 or id = 1').paginate(:page => params[:page], :per_page => 4)
但是,當我使用下面的代碼,
@caves_ids = @caves.collect(&:id)
@sql = 'id = '[email protected]_ids[0].to_s
for i in [email protected]_ids.size-1
@sql += ' or id = '[email protected]_ids[i].to_s
end
@cafe = Cafe.where(@sql).paginate(:page => params[:page], :per_page => 4)
四個職位出來以及在第一頁,但是當我點擊第2頁按鈕,下面的錯誤信息出現:
SQLite3::SQLException: near ")": syntax error: SELECT "caves".* FROM "caves" WHERE (id =) LIMIT 4 OFFSET 4
@sql
和'id = 7 or id = 6 or id = 3 or id = 2 or id = 1'
肯定是相同的!(因爲我確認它幾百倍。)
這是爲什麼發生?
號,這顯然是不空的,因爲'@ sql'值爲''ID = 7或ID = 6或ID = 3或ID = 2或ID = 1 ''... –
它沒有分頁工作? – Ilya
查看生成的SQL命令'... SELECT「caves」。* FROM「caves」WHERE(id =)...' - > so'@ caves_ids'必須爲空數組。你能再檢查一次嗎? –