rails2.3 Ajax分页 实现方案

            
            有段时间没发帖了,一来自己经历了一个压力很大的六月(考试+项目紧促),暑假还要继续完善项目。所以就一直没有心思写点什么。

           说实话,完善功能确实是个枯燥的劳动。弄着弄着就不想弄了,也许是因为这个东西我弄了很久的缘故吧。累了就愿意逛逛网站啥的,看看技术帖子,
听听歌,其实说累也谈不上,毕竟假期我已经没有什么学习上的顾虑。就是看了烦,因为现在这个系统的架构让我越搞越复杂,每一步调整我都要小心,怕影响其
他模块。我更想给自己充充电,学习学习自己感兴趣的技术。因为我清楚的知道自己技术上的不足。

            今天看到一个毕业的师兄发了篇翻译的技术文章,讲PHP优化的,我很是佩服,因为他对技术的追求永远那么炙热,团博里最新更新的几篇文章都是他的。
让我多多少少觉得自己该写点什么,但是还是有些犹豫,后来在他的园子空间看到他的博文关注里只有俺的技术博客的时候,俺啥也不说了,就开始写这篇文章。也许是
我不太喜欢发文章到团博里吧。总之这让我看到了许许多多激励我的人。我的QQ技术群也有180多个喜爱技术并且愿意和我交流的人加入,不管是高手还是新手,我都
很感谢他们,也越发觉得自己不够意思,总是潜水,没有真正做到沟通与交流。想到这,我觉得我自己应该振作,即使知道以后的道路会很苦,也要坚持的走下去。因为
我已经做出了人生的选择。

            rails我用的是最新版本2.3,rails发展至今很快得到web开发人员的推崇,因其快速敏捷的开发而闻名。但是我可能是习惯了Java的开发模式,觉得rails
给我的感觉就是搭积木,拼拼图。快的确是快,比j2ee快很多倍,但是让我觉得这个架构并不在我的掌控之下,封装的太紧密了,就连方法都给你封装好,让我直接使用,
估计是我刚入门吧,没有对他有足够了解。

实例:Ajax分页
1.首先扩展will_paginate插件,因为插件默认是不支持的,在插件中找到view_helpers.rb源文件。
添加代码:
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.在需使用无刷新分页的页面里加入:
<%= javascript_include_tag :defaults %>
3.修改本页的分页方法,改为:
<%= will_paginate_remote (@blogs,:update=>'blogs',:url=>nil,:prev_label=>'上一页',:next_label=>'下一页',:separator=>" | ")%>

ok,大功告成,这样一个Ajax分页就做完了,是不是非常快呐。这也正是其魅力所在。想想用jquery+java去实现
这个功能肯定花费的时间会很多。但是这么着就做完了,的确快的让人受不了。比拖.net控件还爽。

哎,发现自己越来越懒了,发篇帖子鞭策下自己,加油!
继续完善我的项目,等开通以后,我会写一篇这个项目的架构设计,交流,共进。

posted on 2009-07-31 19:29  施杨  阅读(...)  评论(... 编辑 收藏

导航