will_paginateとKaminariはどちらもActiveRecordに非常に結びついているようですか?データが次のようなAPIを介して取得される場合
http://www.foo.com/fetch_data?type=products&offset=100&count=20
では、will_paginateまたはKaminariを使用してページネーションを行うにはどうすればよいですか?できない場合、この状況で機能する他のページネーションソリューションはありますか?
will_paginateとKaminariはどちらもActiveRecordに非常に結びついているようですか?データが次のようなAPIを介して取得される場合
http://www.foo.com/fetch_data?type=products&offset=100&count=20
では、will_paginateまたはKaminariを使用してページネーションを行うにはどうすればよいですか?できない場合、この状況で機能する他のページネーションソリューションはありますか?
私はすでにacts_as_indexedプラグインの非ARセットでページネーションを行っています。
あなたの場合、次のように機能します。
def fetch(page=1, per_page=10)
total_entries = 1000 # Or whatever method you choose to find the total entries.
returning ::WillPaginate::Collection.new(page, per_page, total_entries) do |pager|
url = "http://www.foo.com/fetch_data?type=products&offset=#{pager.offset}&count=#{pager.per_page}"
results = fetch_example(url)# fetch the actual data here.
pager.replace results
end
end
コントローラ:
def index
@records = fetch(params[:page])
end
ビュー:
<%= will_paginate @records %>
データを取得して処理し、合計エントリを計算するための独自のメソッドを入力します。
オブジェクトの配列を改ページする独自の関数を作成しました。独自のニーズに合わせてコードを変更できます。
def array_paginate page, per_page, array
page = page.to_i
per_page = per_page.to_i
total_entries = array.count
total_pages = (total_entries / per_page.to_f).ceil
data = format_records( array[ (page-1)*per_page..page*per_page-1] )
{
page: page,
total_pages: total_pages,
data: data,
}
end