首页 > 解决方案 > Searchkick 分页、限制和偏移问题、rails

问题描述

我想在第一行显示最后的 3 个外观,然后我想显示所有其他外观,但没有 3 个最后的外观。

这是我的代码

def index
    query = params[:query].presence || "*"
    conditions = {}
    conditions[:available] = true
    conditions[:look_tags] = params[:look_tags] if params[:look_tags].present?
    @last_3_looks = Look.search query, where: conditions, order: { created_at: :desc }, limit: 3
    @looks = Look.search query, where: conditions, order: { created_at: :desc }, page: params[:page], per_page: 8
end

问题是如果我像下面这样放置偏移量,我在每一页都有相同的 8 次查看,请问如何处理?

@looks = Look.search query, where: conditions, order: { created_at: :desc }, page: params[:page], per_page: 8, offset: 3
end

标签: ruby-on-railselasticsearchpaginationkaminarisearchkick

解决方案


只需从@looks 中排除前 3 个结果(检查第 6 行)

query = params[:query].presence || "*"
conditions = {}
conditions[:available] = true
conditions[:look_tags] = params[:look_tags] if params[:look_tags].present?
@last_3_looks = Look.search query, where: conditions, order: { created_at: :desc }, limit: 3
conditions[:id] = { not: @last_3_looks.results.collect(&:id) }
@looks = Look.search query, where: conditions, order: { created_at: :desc }, page: params[:page], per_page: 8

推荐阅读