2011-07-01 1 views
29

ための雷のページ付け、レール3、私はこの解決策を持って共通配列をページ付けするための単純なアレイ

@arr_name = Kaminari.paginate_array(@arr_name).PAGE(paramsは[:ページ])。当たり(PER_PAGE_RECORDS)

PER_PAGE_RECORDSは、改ページに必要な値の変数です。

もっと良いアイデア??また

これを使用することができますページネーション1を使用するためのAJAX呼び出しを持っている、あなたのビューで

あなたのdivタブ

div id="paginate" 

にし、その中にIDを与えます

<%=ページ番号@arr_name、:remote => true%>

とJS応答ファイルのPUTで

$( '#1のpaginate')HTML(」= escape_javascript <%は(、(@arr_nameをページ分割:リモート =>真).to_s)%を> ');

あなたのリクエストはAJAXになります。

ありがとうございました。

+0

4桁のインデントまたはバッククォートを使用してコードをフォーマットしてください。ありがとうございました。 –

+4

あなたの問題は何ですか? – Fivell

+0

@Fivellこれが正しいアプローチであるかどうかはわかりませんが? – Roger

答えて

58

これは、Kaminariを使用して配列オブジェクトを改ページするために使用できる唯一のヘルパーメソッドです。もう1つの方法は、kaminari wiki pageに提案されている解決法のように、インスタンスメソッドを配列オブジェクトに追加することです。

ActiveModelの戻り値の型(.allが返され、.whereがARLを返す)に基づいて一般的な解決策を試している場合は、回避策があります。

unless @arr_name.kind_of?(Array) 
    @arr_name = @arr_name.page(params[:page]).per(PER_PAGE_RECORDS) 
else 
    @arr_name = Kaminari.paginate_array(@arr_name).page(params[:page]).per(PER_PAGE_RECORDS) 
end 
+0

偉大な解決:) +1: –

+7

良い解決策。ちょっとした提案@セスパティ。それ以外の場合は 'else else'の代わりに 'if else'を使用するのがベストプラクティスです。:)乾杯! – Ron

+0

すばらしい解決策。どうもありがとう! – fmquaglia

関連する問題