1

私は現在、いくつかの選択ボックスでソートされた作業テーブルを持っています。私は最近、このチュートリアルに従って、エンドレス/無限スクロールを実装しました: http://railscasts.com/episodes/114-endless-page-revised? view=asciicast

チュートリアルはいくつかの変更を加えても機能しましたが、問題が1つあります。最初の列にカウンターを使用していますが、問題は、次のページをロードするたびにカウンターが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>

ありがとう、

ジャック

4

1 に答える 1

1

たくさんの調査の結果、インデックスを使用しているために私のものとは異なるこのスタックオーバーフローポストに出くわしましたが、コードは私のために機能しました! それぞれのRuby/Railsの永続カウンター

_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>
于 2012-11-28T23:22:11.487 に答える