読者です 読者をやめる 読者になる 読者になる

Twitter風なAjaxページネーションをKaminariで実現する

Rails Ajax

Twitter風と言っているのはMoreなリンクがある(かまたはオートページャライズ)でどんどん次のページの要素がたされていくようなページネーション。

Kaminariでの実現方法なのだけどStackOverFlowに同じような質問をしている人がいて、それにKaminariの作者の松田さんが
やり方を答えているものがみつかったのでそれを使って簡単にできた。

ありがとうございます


前回ページネーションの実装まではできているのでそれに付け足して行く感じ。ページャの部分を追記していく。

helper

# 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

view

paginateのところを下記に置き換える

<%= link_to_next_page(@hoges, 'more', remote: true, id: 'view_more') %>


このままだとページャの部分が更新されないので他の方が回答してくれているjsの部分を追記する。

js.erb

$("#view_more").replaceWith("<%= escape_javascript(
    link_to_next_page(@hoges, 'more', remote: true, id: 'view_more')
) %>");