我还没有使用这个库,但据我可以从源代码中找出来,Model#search和Tire :: Search :: Search应该采用相同的选项。如果你看一下产品型号#搜索源代码,它这样做(减少到相关部分):
def search(*args, &block)
query, options = args
s = Tire::Search::Search.new(options.delete(:index), options)
这样的选择是通过对轮胎::搜索::搜索的初始化只是递给。
但是,这只是创建对象。轮胎::搜索::搜索似乎在内部使用术语size
和from
而不是per_page
和page
。所以上面的代码将继续这样的:
page = options.delete(:page)
per_page = options.delete(:per_page) || Tire::Results::Pagination::default_per_page
s.size(per_page.to_i) if per_page
s.from(page.to_i <= 1 ? 0 : (per_page.to_i * (page.to_i-1))) if page && per_page
如此看来from
作品从不同page
(而size
和per_page
是相似的)。 from
是绝对的位置。 (我不知道Tire :: Results :: Pagination :: default_per_page在这里增加了什么,或许可以设置一些默认值。)
为了得出结论,我的教育猜测应该是这样的为你工作:
search = Tire::Search::Search.new("items", size: 20, from: 0)
其中用于其他页面位置,你会计算(per_page *(页面 - 1))