Ruby 板


LINE

http://lightyror.blogspot.com/2006/11/pagination.html Ruby on Rails 其中一个特色,就是把 Web Programming 里面繁琐的细节,用优美简单的语法来修饰。所以,通常你不需要花太多时间在细节上面,而是可以直接往 business logic 进攻。什麽是繁琐的细节呢?分页就是典型的例子。 什麽是分页呢?举 Google 为例子, 约有70,200,000项符合rails的查询结果,以下是第 21-30项。 页数检索: 上一页 1 2 3 4 5 6 7 8 9 10 11 12 下一页 这些就是分页,商业逻辑超级简单,但是出现频率也超级高,繁琐到不能再繁琐的东西。这个时候 Rails用 Paginaton 来解救苦难的同胞啦。Pagination 顾名思义,Google 字典是这样解释的 pagination: 分页; 标记页数 不过一直到今天,我才知道分页的英文(汗)。果然学 Ruby on Rails 让我英文进步不少(尤其是一些单复数的英文),可以考虑当作一个学 Rails 的优点 XD 。他是一个 Build in 的功能,所以他整合的很好,我们从 controller level 跟 action level 来看。 Action Level: 单一个 action 才会使用到的分页,使用方式如这 def list @person_pages, @people = paginate :people end 他 会都会去 people 资料库捞全部的资料,然後将取出来的值放在 @people 这个变数里面,另外他会写入分页档案到 @person_pages 这个变数里面,至於现在的页数他会放到 params[:page] 这个变数里面。至於排序,限制一页有几个资料等等的问题,他都有选项可以设定,请看Pagination手册。 Controller Level : 代表全部的 action 都要分页 class PersonController < ApplicationController paginate :people end 他会每个 action 都会去作刚刚的事情。每一个 action 都会去 people 资料库捞全部的资料,然後将取出来的值放在 @people 这个变数里面,另外他会写入分页档案到 @person_pages 这个变数里面,至於现在的页数他会放到 params[:page] 这个变数里面。 View 写法: 写好 controller 当然要开始进入重点了,View 要怎麽用?我们看看刚刚指定完成的变数, @people ,跟 @person_pages 。首先,@people 代表的是 Model Object 的 array ,使用方式大家很清楚。但是 @person_pages 代表的是分页这个 Object ,这就有点意思了,我们来看看怎麽用。 所有的数量: @person_pages.item_count 目前这一页的第一个序号: @person_pages.current.first_item 目前这一页的最後一个序号:@person_pages.current.last_item 上一页: link_to(h('< page =""> @person_pages.current.previous}) if @person_pages.current.previous 下一页:link_to(h('Next >'), {:page => @person_pages.current.next}) if @person_pages.current.next 页数列表(就是 1 2 3 4 5 6):pagination_links(@person_pages) 简单吧!!! Pagination 使用就是那麽简单,而且可以帮你简单的避开繁琐的分页,真是很实用的东西。 -- lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog http://lightyror.blogspot.com/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.101.150
1F:→ contagious:pagination 是好用,可是资料太多的时候要小心效能问题 11/09 01:07
2F:推 PsMonkey:不过就是效能... 没关系啦... 11/09 01:35
※ 编辑: giive 来自: 61.230.100.157 (11/09 09:07)
3F:推 wawawa:二楼感觉蛮没礼貌的...这里是ruby版吧?有需要这样嘛? 11/09 09:06
4F:推 PsMonkey:这个说法是我在 Ruby 版看来的... 11/09 10:47
5F:推 godfat:不过效能的影响力会一年比一年弱倒是真的。虽然同时 11/09 13:50
6F:→ godfat:我们的要求也一年比一年高 -_-b 11/09 13:50







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP