最初に、これは多くの他の人々のコードを使用しており、何が起こっているのか、私の問題を解決する方法を完全には理解していない例であることを述べさせてください.
will_paginate を使用して Railscast に従って無限スクロールを行ったところ、問題なく動作しました。
ページごとに 12 個のアイテムをロードし、それぞれが独自のパーシャルに含まれています。各アイテムは、ユーザーが「いいね」ボタンをクリックして「いいね」できるオブジェクトです。
このボタンを ajax 化し、「いいね」されたアイテムのパーシャルをリロードします。
これは、項目 1 ~ 12 (最初のページ) で正常に機能します。
ユーザーが無限スクロールでロードされたアイテムの親指ボタンをクリックすると、ajax 呼び出しが実行されますが、オブジェクトが再び見つからず、パーシャルは単純に空白になります。
これが私のコードです-
#@messages partial
<div class="span3 well" style="height:360px;" id="message-<%=message.id%>">
<div class="thumbnail">
<%= image_tag message.gif.url %>
<div class="caption">
<h5><%=link_to message.sender, "/profile/#{User.find_by_username(message.sender).id}"%></h5>
<h5><%=message.chain.subject %></h5>
<p><em>"<%= message.content %>"</em></p>
<p><a href="/upvote/<%=message.id%>" data-remote="true" class="btn btn-success"><%=message.up_votes%>
<i class="icon-thumbs-up"></i> Nice Work</a>
</div>
</div>
</div>
# js.coffee (from railscast)
jQuery ->
$(window).scroll ->
url = $('.pagination .next_page').attr('href')
if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
$('.pagination').text('Loading more gifs...')
$.getScript(url)
# vote.js -- js executed by ajax call
$("#message-<%=params[:id]%>").load(location.href+" #message-<%=params[:id]%>>*", "");
私は、問題がvote.jsにあると確信しています。現在のURL として、最初の 12 個のオブジェクトのみを提供する which を.load(location.href+" #message-<%=params[:id]%>>*", "");
使用するため、2 ページ目、3 ページ目、4 ページ目などのオブジェクトを見つけることができないようです。location.href
どうにかしてページをその URL に入れる必要があると思いますが、それを達成する方法がわかりません。
EDIT-または、ページ分割されていないすべてのメッセージのエンドポイントを用意し、代わりにそのURLを呼び出す必要がありlocation.href +
ますか?