7

私はKaminariで結果を読み込むために "More"ボタンを使って "Twitterのような"ページ設定をしようとしています。Rails 3 - Kaminariの "More" ajaxページネーション

私はこの質問here

が見つかりましたが、私はそれが動作するようにする方法を見つけ出すことはできません、それは良いアプローチだ場合。事前

答えて

17

おかげで、あなたは「もっと」ボタンを必要とするわけですか?このようなヘルパーを作るのはどうですか?

# usage: 
# link_to_next_page(@items) 
# link_to_next_page(@items, :remote => true) # Ajax 
def link_to_next_page(scope, name, options = {}, &block) 
    param_name = options.delete(:param_name) || Kaminari.config.param_name 
    link_to_unless scope.last_page?, name, {param_name => (scope.current_page + 1)}, options.merge(:rel => 'next') do 
    block.call if block 
    end 
end 

私はあなたがそれを有用見つけたら宝石にヘルパーメソッドのこの種を含むように準備ができていますので、私はあなたが聞かせてください。ありがとう!

+0

偉大な、素晴らしい作品!確かにそれを宝石に含めることは有益でしょう。それは非常に魅力的でより多くの一般的なページングの種類をカバーする:)ありがとう! – invaino

+0

こんにちは、私は自分自身で「もっと」ボタンを作成しようとしているので、これを見つけました。私はjqueryで本当に新しく、何も動かないようです。このヘルパー・メソッドがjqueryに接続して「もっと」ボタンを作る方法を説明できますか? –

+0

ボタンの数が多いほどいいですが、前のアイテムを残し、次のアイテムは前のアイテムより下にしてください。 – Uchenna

1

link_to_next_page(@items, :remote => true)は、そのまま使用できません。 Ajaxリクエストの後に現在のページを判断する方法がないため、新しいアイテムを取得した後にリンクを置き換える必要があります。控えめなJavaScriptを使用して、これは何かが次のようになります。これは意味をなさない場合

# app/views/items/index.js.erb 
$(".items").append("<%= escape_javascript(render(@items)) %>"); 
$(".more_link").replaceWith("<%= escape_javascript(
    link_to_next_page @items, 'View more', 
         :remote => true, 
         :id  => :view_more) %>"); 

、RailscastsでUnobtrusive Javascript screencastを見てみましょう。