2

will_paginateとKaminariはどちらもActiveRecordに非常に結びついているようですか?データが次のようなAPIを介して取得される場合

http://www.foo.com/fetch_data?type=products&offset=100&count=20

では、will_paginateまたはKaminariを使用してページネーションを行うにはどうすればよいですか?できない場合、この状況で機能する他のページネーションソリューションはありますか?

4

2 に答える 2

3

私はすでに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 %>

データを取得して処理し、合計エントリを計算するための独自のメソッドを入力します。

于 2011-04-01T08:48:17.563 に答える
0

オブジェクトの配列を改ページする独自の関数を作成しました。独自のニーズに合わせてコードを変更できます。

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
于 2015-04-22T07:44:45.260 に答える