一尘不染

轮胎搜索和will_paginate-未定义的方法“偏移”

elasticsearch

在对ThoughtSphinx和Solr / Sunspot感到头疼之后,我们正在尝试使用ElasticSearch和Tire作为我们的搜索后端-
但我遇到了一个问题。

这是我在控制器中的搜索命令:

@results = Item.search params[:search], :page => ( params[:page] || 1 ), :per_page => 20

这是视图的问题部分:

<%= page_entries_info @results %>

我收到的错误消息是

undefined method `offset' for #<Tire::Results::Collection:0xa3f01b0>

但仅当结果的价值超过一页时。如果退回的商品少于20件,则可以正常显示。

我可以在其他地方找到的唯一类似的已报告问题是通过将:page:per_page参数传递到search函数中来解决的,但是我已经这样做了,但无济于事。


阅读 284

收藏
2020-06-22

共1个答案

一尘不染

Tire具有分页模块,但未定义offset。您可以向他们提出问题以将其添加,但是与此同时,您可以在应用中对其进行猴子补丁:

Tire::Results::Pagination.module_eval do
  def offset
    (@options[:per_page] || @options[:size] || 10 ).to_i * (current_page - 1)
  end
end
2020-06-22