Rails3 / will_paginate / Ajax - 下一个/上一个链接无法正常工作(这是一个错误吗?)

时间:2011-03-20 22:15:41

标签: jquery ruby-on-rails ajax ruby-on-rails-3 will-paginate

我正在关注我的rails 3应用程序的“Pagination with ajax”railscast。除了上一个和下一个链接根本不起作用之外,一切似乎都很有效。

基本上,

  • 即使我点击其他页面,(当我在用户/ show page1上时),前一个链接似乎仍然卡住了

  • “下一个链接”一直工作到第2页(我之后无法使用)

  • 当我来到“......”

  • 时,数字没有更新

我很高兴知道是否有人遇到同样的问题(一个错误?)或者我的代码是错误的。 我使用paginate(“〜> 3.0.pre2”和jquery 1.8.10)获取依赖于用户的微博列表。

非常感谢你的帮助!

这里是代码:

layout_helper.rb

module LayoutHelper
  def javascript(*args)
    content_for(:head) { javascript_include_tag(*args) }
  end
end

users_controller.rb

def show
    @user = User.find(params[:id])
    @microposts = @user.microposts.paginate(:per_page => 10, :page => params[:page])
end

微柱/ _micropost.html.erb

...

的用户/ show.html.erb

<% javascript "pagination" %>

...

<%= will_paginate @microposts %>
  <ul id="feed_items">
    <%= render @microposts %>
  </ul>

的用户/ show.js.erb

$("#feed_items").html("<%= escape_javascript(render @microposts ) %>");

pagination.js

$(document).ready(function() {
  $(".pagination a").live("click", function() {
    $.get(this.href, null, null, "script");
    return false;   
  });
});

2 个答案:

答案 0 :(得分:2)

或者,如果你想坚持使用will_paginate,那就是一个简单的修复。只需将你的帮助方法放在一个div中:

<div id="page_links">
 <%= will_paginate @microposts %>
</div>

然后,在您的js.erb文件中将此行添加到结尾:

$('#page_links').html('<%= escape_javascript(will_paginate @microposts) %>');

你已经在那里传递了页面和所有正确的参数,所以这只会强制视图链接正确更新。

答案 1 :(得分:1)

我建议您查看http://railscasts.com/episodes/254-pagination-with-kaminari

will_paginate未更新以使用Rails 3。