Я пытаюсь реализовать бесконечную прокрутку, используя will_paginate. Учитывая мой текущий код, вывод состоит в том, что на каждой странице содержимое печатается дважды (...), и когда я добираюсь до нижней части страницы, появляется только обычная нумерация страниц (без бесконечной прокрутки). Когда я добираюсь до последней страницы, нумерация страниц исчезает (так что работает pagination.remove).
Приложение простое. Пользователи перечислены, поэтому другие пользователи могут дать им рекомендации.
index.html.erb:
<div id="users">
<%= render :partial => 'help/user' %>
</div>
<%= will_paginate @users %>
<script>
$('#users').append('<%= j render :partial =>'help/user' %>');
<% if @users.next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@users) %>');
<% else %>
$('.pagination').remove();
<% end %>
<% sleep 1 %>
</script>
Я поместил скрипт выше, потому что когда я помещал его в index.js.erb, он ничего не делал.
help.coffee (указанный выше файл находится в папке справки и управляется контроллером справки):
jQuery ->
if $('.pagination').length
$(window).scroll ->
url = $('.pagination .next_page').attr('href')
if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
$('.pagination').text('Fetching more...')
$.getScript(url)
$(window).scroll()
контроллер справки:
@users = User.all.order("updated_at DESC").paginate(page: params[:page], per_page: 5)
respond_to do |format|
format.html
format.js
end