現在、Tire と ElasticSearch を使用して 2 つのモデル (投稿とチャネル) を検索しています。
will_paginate を使用してページネーションを追加する必要があります。問題は、Tire がコントローラーで will_paginate をサポートしていないように見えることです (:page と :per_page は機能しません...)。Tire でページネーションを使用するには、モデルで呼び出す必要があります。
モデルで Tire を呼び出す際の問題は、これを行うと、Tire で 2 つのモデル (投稿とチャンネル) を同時に検索できないことです。
つまり... 簡単に言うと... コントローラーで Tire を使用すると、ページネーションはできませんが、2 つのモデルを同時に検索できます。モデルで 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