0

我正在尝试将 jQuery Ajax 实现到我的 rails 应用程序中,并且到目前为止它正在工作,但是有一个我无法解决的错误。基本上,我有一个书籍页面,其中列出了所有使用 will_paginate 将它们分组为每页 5 页的书籍。

我的 Books 视图的 index.html.erb 文件包含以下代码片段:

<div id="page_paginate">
    <%= will_paginate @books %><br />
    <%= render @books %>

 </div>

@books 部分保存为 _book.html.erb,如下所示:

<div class="books_box">
 <h1><%= book.title%><span>(<%=link_to book.author.name, book.author%>)</span></h1>
  <img alt="image" src="<%= book.image_url %>">
    <div class="book_info">
         <div class="detail_button"><%= link_to "Details", '#' %></div>
         <div class="like_button"><%= link_to "Like", '#' %></div>                 
    </div

在我的 application.js 文件中,我有以下代码:

$(function() {
  $("#page_paginate .pagination a").live("click", function() {
    $.getScript(this.href);
    return false;
  });

});

而且我在 views/books 目录中也有一个 index.js.erb 文件:

$("#page_paginate").html("<%= escape_javascript(render(@books))%>")

问题是:

虽然分页与 ajax 完美配合;页面在没有重新加载页面的情况下翻页,第一次点击后分页链接消失,我必须返回到 books_url 让它再次显示。我曾尝试以这种方式将 <%= will_paginate %> 放入部分书籍中:

<%= will_paginate @books %><br />
<div class="books_box">
     <h1><%= book.title%><span>(<%=link_to book.author.name, book.author%>)</span></h1>
      <img alt="image" src="<%= book.image_url %>">
        <div class="book_info">
             <div class="detail_button"><%= link_to "Details", '#' %></div>
             <div class="like_button"><%= link_to "Like", '#' %></div>                 
        </div

  </div>

但是这样一来,页面链接就会显示在每个列表的顶部。我的目标是让分页链接仅显示在每个页面末尾的上方和下方。我认为这可能是我的循环或放置链接的位置有问题,但我已经尝试了我的新手可能想到的一切。我将不胜感激。谢谢

4

1 回答 1

1

当以下代码运行时

$("#page_paginate").html("<%= escape_javascript(render(@books))%>")

它有效地删除了以下内容<div id="page_paginate">

<div id="page_paginate">
    <%= will_paginate @books %><br /> <!-- This is removed. -->
    <%= render @books %> <!-- This is also removed. -->
</div>

在它适用之前.html("<%= escape_javascript(render(@books))%>")

为防止<%= will_paginate @books %><br />被删除,请按如下方式包装<%= render @books %>另一个:<div>

<div id="page_paginate">
    <%= will_paginate @books %><br />
    <div id="books_render">
        <%= render @books %>
    </div>
</div>

并选择#books_render而不是#page_paginatein index.js.erb

$("#books_render").html("<%= escape_javascript(render(@books))%>")
于 2013-05-08T14:24:52.320 回答