前段时间忙于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,新代码已解决此问题。

