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