Kaminari бесконечная проблема подкачки
Я пытаюсь использовать Kaminari + jQuery для бесконечной пагинации / бесконечной прокрутки. Я пытаюсь добавить разбитые на страницы результаты (строки) в таблице. К сожалению, результаты (разметка строки) появляются над таблицей. Вот моя существующая установка:
events_controller.rb
class EventsController < ApplicationController
respond_to :html, :js
def index
@events = Event.all
respond_with(@events)
end
end
События /index.html.erb
<div id="events-container">
<table cellpadding="3" cellspacing="0">
<thead>
...
</thead>
<tbody>
<% if @events.blank? %>
<tr><td> No events yet</td></tr>
<% else %>
<div id="events">
<%= render @events %>
</div>
<% end %>
</tbody>
</table>
<nav class="pagination-container">
<%= paginate @events %>
</nav>
</div>
События /index.js.erb
$('#events').append('<%= j render(@events) %>');
<% if (@events.current_page < @events.num_pages) %>
$('.pagination').replaceWith('<%= j paginate(@events) %>');
<% else %>
$('.pagination-container').remove();
<% end %>
События / _event.html.erb
<tr>
<td><%= event.time %></td>
...
</tr>
<tr>
<td><%= event.location %></td>
...
</tr>
events_endless_paging.js
jQuery(function() {
var isScrolledIntoView;
isScrolledIntoView = function(elem) {
var docViewBottom, docViewTop, elemBottom, elemTop;
docViewTop = $(window).scrollTop();
docViewBottom = docViewTop + $(window).height();
elemTop = $(elem).offset().top;
elemBottom = elemTop + $(elem).height();
return (elemTop >= docViewTop) && (elemTop <= docViewBottom);
};
if ($('.pagination').length) {
$(window).scroll(function() {
var url;
url = $('.pagination .next a').attr('href');
if (url && isScrolledIntoView('.pagination')) {
$('.pagination').text('Fetching more...');
var script = $.getScript(url);
return script;
}
});
return $(window).scroll();
}
});
Кажется, что все правильно подключено, но в итоге строки таблицы вставляются между #event-container div и таблицей. Таким образом, стили строк не очень удобны, потому что теги неправильно вставляются в контекст таблицы. У меня такое чувство, что мне нужно вставить разметку таблицы в ответ js, но я не уверен.
1 ответ
Я не думаю, что наличие div внутри тела таблицы допустимо.
Если вы удалите div и добавите новые строки непосредственно в tbody, у вас будет больше успеха.
<tbody>
<% if @events.blank? %>
<tr><td> No events yet</td></tr>
<% else %>
<%= render @events %>
<% end %>
</tbody>