0

首先让我声明,这是一个使用很多其他人的代码的实例,并且没有完全理解正在发生的事情以及如何解决我的问题。

我使用 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 中。.load(location.href+" #message-<%=params[:id]%>>*", "");似乎无法在第 2、第 3、第 4 等页面上找到对象,因为它使用作为location.href当前 url 的仅提供前 12 个对象的对象。我想我需要以某种方式将页面放在那个 url 中,但我不知道如何做到这一点。

编辑 - 或者,也许我应该为所有未分页的消息设置一个端点,并调用该 url 而不是location.href +?

4

1 回答 1

0

这个问题似乎已经解决了。

有趣的是,它似乎并没有在本地工作,而是在 Heroku 上工作。

如果有人对此有解释,我很想听听,否则就解决了!

于 2012-06-10T22:57:47.540 回答