Rails 3.2:为什么第一次点击后will_paginate页面链接会消失

时间:2013-05-08 13:00:27

标签: jquery ruby-on-rails-3.2 will-paginate

我正在尝试将jQuery Ajax实现到我的rails应用程序中,到目前为止它正在运行,但是有一个我无法解决的问题。基本上,我有一个书籍页面,列出了所有使用will_paginate的书籍,每个书籍以5页为单位进行分组。

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

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

 </div>

@books partial保存为_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才能再次显示。我试过把&lt;%= will_paginate%&gt;在书中偏向这样:

<%= 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>

但是这样,页面链接显示在每个列表的顶部。我的目标是让分页链接仅显示在每页末尾的上方和下方。我认为这可能是我的循环问题或我放置链接的地方,但我已经尝试了我的新手心灵可能设想的一切。我会感激一点帮助。感谢

1 个答案:

答案 0 :(得分: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_paginate而不是index.js.erb

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