我使用'will-paginate‘gem来使用分页。下面的代码运行得很好。
@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 = '+@caves_ids[0].to_s
for i in 1..@caves_ids.size-1
@sql += ' or id = '+@caves_ids[i].to_s
end
@cafe = Cafe.where(@sql).paginate(:page => params[:page], :per_page => 4)第一页有四个帖子,但当我点击第二页按钮时,出现了下面的错误消息:
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'绝对是一样的!(因为我已经确认了几百次了。)
这一切为什么要发生?
发布于 2016-02-14 16:38:02
看起来你的@caves_ids数组是空的。无论如何,我建议你使用下一个解决方案:
@cafe = Cafe.where(id: [7,6,3,2])在本例中,数组为@caves_ids,但当数组为空时,不会出现语法错误。
发布于 2016-02-14 20:42:04
请尝试以下方法
@caves_ids = @caves.pluck(:id)
@caves_ids.count.each do |id|
@sql=@sql+' or id='+id.to_s
end
@cafe = Cafe.where(@sql).paginate(:page=>params[:page],:per_page => 4)https://stackoverflow.com/questions/35389818
复制相似问题