在对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函数中来解决的,但是我已经这样做了,但无济于事。
:page
:per_page
search
Tire具有分页模块,但未定义offset。您可以向他们提出问题以将其添加,但是与此同时,您可以在应用中对其进行猴子补丁:
offset
Tire::Results::Pagination.module_eval do def offset (@options[:per_page] || @options[:size] || 10 ).to_i * (current_page - 1) end end