14

DIES IST DIE LÖSUNGwill_paginate mit endlosem Scrollen | Rails4

So verwende ich will_paginate/Bootstrap Will Paginate mit Endless Scrolling.

die Paginierung Funktion erhalten:

1.) In meinem Controller-i mit

meine Index Aktion aktualisiert
@clips = Clip.order("created_at desc").page(params[:page]).per_page(20) 

2.) verändern Meine Indexansicht:

<%= will_paginate @clips%> 

FERTIG

Seitenumbruch funktioniert gut.

To Add Endless scrolling Ich habe die gleichen Schritte wie in meiner vorherigen Rails 3 App.

1.) bearbeiten meine clips.js.coffee

jQuery -> 
$('#clips-masonry').imagesLoaded -> 
    $('#clips-masonry').masonry itemSelector: ".clips-masonry" # Thats my Masonry 

if $('.pagination').length # Thats for the Endless Scrolling 
    $(window).scroll -> 
     url = $('.pagination .next_page a').attr('href') 
     if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50 
      # What to do at the bottom of the page 
      $('.pagination').text("Fetching more Clips...") 
      $.getScript(url) 
     $(window).scroll() 

2.) Eine index.js.erb mit:

$boxes = $('<%= j render(@clips) %>') 

$('#clips-masonry').append($boxes).imagesLoaded(function(){ 
    $('#clips-masonry').masonry('reload'); 
}); 
<% if @clips.next_page %> 
    $('.pagination').replaceWith('<%= j will_paginate(@clips) %>'); 
<% else %> 
    $('.pagination').remove(); 
<% end %> 

3.) Zu meiner Controller-Index-Aktion format.js hinzugefügt

def index 
    @clips = Clip.order("created_at desc").page(params[:page]).per_page(12) 
    respond_to do |format| 
     format.html 
     format.js 
    end 
end 

4.) Mein _clip.html.erb mit dem div gewickelt ist

<div class="clip-box clips-masonry" data-no-turbolink> 
+0

Was ist das Problem? Der endlose Scroll-Paginierungscode funktioniert (obwohl er nicht turbolinksfreundlich ist) - wenn Sie Ihren Fehler auflisten, erhalten Sie möglicherweise einen Einblick. – trh

+0

Das Problem ist, dass es nicht funktioniert :), Es gibt keinen Fehler, Endlos funktioniert einfach nicht :(Ich denke, es hat mit der format.js zu tun, die ich in meinem Controller enthalten muss. Aber in Rails 4 die Controller geändert und ich kann es nicht zur Arbeit. –

+0

Es funktioniert gut für mich, ich benutze immer noch die Antwort zu blockieren mit format.js. Was ist das Ereignis in Ihrem Protokoll aufrufen, HTML? so etwas wie 'Clips? Seite = 2 'Mit' ClipsController # index as HTML'? – trh

Antwort

7

Ok, ich habe es mit meiner aktualisiert Frage arbeiten, jeder, der auf dieses Problem stolpert, Dies ist die Lösung.