Próbuję użyć will_paginate dla aplikacji Rails 3.2 i nie widziałem nigdzie żadnego odniesienia, co dzieje się, gdy ktoś jest stronicowania, podczas gdy dane w db są zmienione . Dokładniej, dodawane są nowe rekordy.Szyny will_paginate i ajax, stronicowania, podczas gdy tabela DB zmienia
Możliwe, że czegoś tu brakuje, ale jeśli rozumiem, jak to działa, to _paginate po prostu zlicza rekordy w DB. Załóżmy, że ładuję stronę z 5 rekordami naraz i chcę, aby były one sortowane przez najnowsze. Użytkownik ładuje stronę i pobiera zapisy 6-10 (najnowsze rekordy w tym czasie) pokazane na stronie 1. Następnie ktoś wstawia inny rekord do tabeli, id = 11. Następnie pierwszy użytkownik klika, aby przejść do strony 2, ale teraz strona 2 podaje zapisy 2-6. Tak więc użytkownik uzyskał id = 6 na obu stronach.
Ten problem nie brzmi tak źle, ale to jest naprawdę źle, jeśli chcesz używać will_paginate stronicowania dla nieskończonego przewijania jak pokazano tutaj: http://railscasts.com/episodes/114-endless-page
myślałem o dodanie znacznika czasu pierwszego ładowania strony i przekazuje go do kolejnych wywołań ajaxowych w celu filtrowania rekordów, które były obecne na początku, aby nie uzyskać duplikatów.
Czy jest jakiś sposób postępowania z najlepszymi praktykami?
Użyłem znacznika czasu, aby uzyskać tylko dane, które były obecne w czasie ładowania pierwszej strony. – Oded
W takim przypadku możesz rozważyć dodanie sprawdzenia, czy są jakieś nowości bardziej aktualne niż znacznik czasu, a jeśli tak, wyświetlić łącze, aby umożliwić użytkownikowi załadowanie bardziej aktualnych wyników (zobacz, jak robi to twitter, dla przykład). – Benissimo