我目前正在使用Tire和ElasticSearch搜索两个模型(帖子和频道)。
我需要使用will_paginate添加分页。问题是,Tire似乎不支持控制器中的will_paginate(:page和:per_page不起作用......)。事实证明,要使用Tire分页,你必须在你的模型中调用它。
在我的模型中调用Tire的问题是,如果我这样做,Tire将不会让我同时搜索我的两个模型(帖子和频道)。
所以...长话短说...如果我在控制器中使用Tire,我不能有分页但我可以同时搜索我的两个模型。如果我在我的模型中使用Tire,我无法同时搜索我的两个模型,但我可以进行分页。
这看起来很愚蠢。有办法解决这个问题吗?
作为参考,这是我的控制器中的代码,它允许我同时搜索我的两个模型:
def browse
@user = current_user
@search_items = Tire.search(['posts_index', 'channels_index'], load: true) do |search|
if params[:query].present?
search.query do |q|
q.string params[:query], default_operator: "AND"
end
end
search.filter :term, :visibility => ['public']
search.sort { by :created_at, "desc" }
end
@results = @search_items.results
end