別の解決策は次のとおりです。will_paginate はクエリ文字列パラメーター「search_field」と「page」のみを使用します。これらは Rails の params ハッシュから抽出できます。セッション状態を使用してそれらを追跡している場合は、必要に応じてコントローラー コードでそれらを再適用できます。
それをどのように管理するかは、アプリケーションによって異なります。私が取り組んでいるアプリでは、一般的なコンテキストとメンバー コンテキストを区別できるようなフローになっています。ユーザーは、member#index ページからメンバー コンテキストに入ります。そのため、メンバー コンテキストへのエントリで session[:member_context] を設定しました。例: members#edit で。次に、members#index に次のコードがあります。
if session[:member_context]
@search_field = session[:search_field]
@page = session[:page]
# toggle out of member context
session[:member_context] = nil
else
@search_field = params[:search_field]
@page = params[:page]
# record lastest search in case the user subsequently enters the member context
session[:search_field] = @search_field
session[:page] = @page
end
@members = Member.where(<use @search_field>).page(@page)
# and render ...
これは私のアプリケーションでうまく機能します。