隐藏的反分页问题

时间:2012-10-29 15:11:12

标签: ruby-on-rails ruby-on-rails-3 pagination auto-increment infinite-scroll

我目前有一个工作表,按几个选择框排序。我最近通过以下教程实现了无限/无限滚动:http://railscasts.com/episodes/114-endless-page-revised?view=asciicast

该教程经过几次更改后仍然有效,但我有一个问题。我在第一列使用计数器,但问题是每次加载下一页时,计数器都会重置为1,所以计数器就像1..2..3 ..一直到50,但是当我滚动到底部时,它会重置为1.我当前在开始时显示50条记录,每次用户向下滚动到底部时再显示50条记录。我希望接下来的记录是51 ... 52 ... 53 ......等等。然后,当你下次滚动到底部时,从101开始,然后是102 ... 103 ... 104 ...等等,例如排名列表。

为了获得部分我遵循本教程,它还告诉我如何制作计数器列: http://xianese.blogspot.com/2008/06/render-collection.html

在做了一些研究后,我发现我使用的计数器几乎没有记录,有几个人报告了它的分页问题,​​这意味着它不仅仅是一个无限滚动的问题,而是分页(我正在使用will_paginate)。在一个网站上,一个人说他们已经解决了分页问题,​​但后来没有说明如何,而且帖子现已关闭,所以我知道有办法解决这个问题。

这是该网站的链接: http://www.pgrs.net/2007/07/20/render-partial-with-collection-has-hidden-counter/

任何可以帮助我的事情都会受到高度赞赏。

这是我的代码:

articles.js.coffee

jQuery ->
   if $('.pagination').length
      $('#articles_table').scroll ->
              url = $('.pagination .next_page').attr('href')          
              if url &&  $('#articles_table')[0].scrollHeight -    
              $('#articles_table').scrollTop() < 700                  
                      $('.pagination').text('Fetching more users...')
                      $.getScript(url)
$('#articles_table').scroll()

index.html.erb

<table class="table table-striped table-bordered span8 table-condensed"     
 id="articles_table" >
<thead class="header">
  <tr>
      <th>ID</th>
      <th>Title</th>
      <th>Description</th>
      <th>Created_At</th>
  </tr>
</thead>
<tbody>
<%= render @articles %>

</tbody>

index.js.erb的

$('#articles_table').append('<%= j render(@articles) %>');
<% if @articles.next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@articles) %>');
<% else %>
$('.pagination').remove();
<% end %>

_article.html.erb

<tr>
      <td> <%= article_counter +1 %> </td>
      <td> <%= article.Title %> </td>
      <td> <%= article.Description %> </td>
      <td> <%= article.Created_At %> </td>
</tr>

谢谢,

杰克

1 个答案:

答案 0 :(得分:1)

经过大量的研究,我发现这个堆栈溢出帖子与我的不同,因为它使用的是索引,但代码对我有用! persistent counter in Ruby/Rails for each

以下是我添加到_article.html.erb的代码:

<% if params[:page].nil? || params[:page] == "0" || params[:page] == "1" %>
  <% x = 0 %>
<% else %>
  <% page = params[:page].to_i - 1 %>
  <% x = page * 50 %>
<% end %>

我刚刚添加了一个x,所以它是: article_counter + x + 1 ,x在上面的代码中定义。以下是整个文件的样子:

<% if params[:page].nil? || params[:page] == "0" || params[:page] == "1" %>
      <% x = 0 %>
    <% else %>
      <% page = params[:page].to_i - 1 %>
      <% x = page * 50 %>
    <% end %>
<tr>
      <td> <%= article_counter +1 %> </td>
      <td> <%= article.Title %> </td>
      <td> <%= article.Description %> </td>
      <td> <%= article.Created_At %> </td>
</tr>