25th Oct, 2007

AJAX分页(paginate)

前段时间忙于Shanghai on Rails,没怎么更新,不太好意思,活动纪实随后奉上。

will_paginate是个好插件,但它不支持AJAX,在Ruby on Rails Wiki里找到一篇文章,通过一个很简单的Hack,实现了AJAX的分页,方法如下:

1. 在application_helper.r中定义will_paginate_remote helper:

def will_paginate_remote(paginator, options={})
  update = options.delete(:update)
  url = options.delete(:url)
  str = will_paginate(paginator, options)
  if str != nil
    str.gsub(/href="(.*?)"/) do
      "href=\"#\" onclick=\"new Ajax.Updater('" + update + "', '" + (url ? url + $1.sub(/[^\?]*/, '') : $1) +
      "', {asynchronous:true, evalScripts:true, method:'get',}); return false;\""
    end
  end
end

2. 在view中调用will_paginate_remote:

will_paginate_remote(feeds, :param_name => 'feed_page', :update=>'feed-list', :url=>"/feeds/list")

那个URL参数是我加的,因为有时候可能请求不是发给当前页,原文还提供了其它几种方法,我觉得这个不错,比较简单。

更新:感谢Raeboo,发现了一个多page参数的Bug,新代码已解决此问题。

评论

相当得好,简单易操作,thx

非常好,但是 “method:’get’,}); ”后面多了个逗号 :)
能否加上loading和complete的效果?我想会更完美点

留条评论?

Your response:

Categories