惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
Scott Helme
Scott Helme
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Securelist
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
量子位
Security Latest
Security Latest
P
Proofpoint News Feed
P
Privacy International News Feed
P
Palo Alto Networks Blog
D
DataBreaches.Net
大猫的无限游戏
大猫的无限游戏
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google Online Security Blog
Google Online Security Blog
Webroot Blog
Webroot Blog
云风的 BLOG
云风的 BLOG
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 【当耐特】
C
CERT Recently Published Vulnerability Notes
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
Hacker News - Newest:
Hacker News - Newest: "LLM"
K
Kaspersky official blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Stack Overflow Blog
Stack Overflow Blog
AWS News Blog
AWS News Blog
博客园 - Franky
爱范儿
爱范儿
T
Tor Project blog
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
小众软件
小众软件
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
W
WeLiveSecurity
SecWiki News
SecWiki News
L
LangChain Blog
I
InfoQ

博客园 - 老刘.

【2010年10月15日】沈阳添美科技有限公司招聘软件开发 2008年7月22日 招聘美工 沈阳中美天成汽车销售有限公司 招聘 web 开发 对微软 MVC 发发牢骚 Beginning Google Maps Applications with Rails and Ajax From Novice to Professional - Chapter One 首届 IT-MM 杯 羽毛球大赛 联谊活动火热报名中 周六(6月7日)博客园沈阳.NET俱乐部线下聚会 Linux中的远程连接 SSH and VNC图形模式 [招聘]沈阳博宇有色金属炉料有限公司 - 诚聘 WinForm 程序开发人员 沈阳地区新技术.Net技术研讨与培训 [招聘]老刘公司招兵买马~~~~ 会是这一年吧 Web框架标准之期待篇 辽宁华信信息产业有限公司 招聘中 网站上线 Top10 Web2.0在线生成器 Rails vs. Django 谁更强!? 轻松打造个人网站-关于整站配置和关键字定制 轻松打造个人网站-关于数据访问
Rails 2.0 中分页的实现 will_paginate插件
老刘. · 2008-03-12 · via 博客园 - 老刘.
 

最近准备开发web项目,挑来选去,最终决定用Rails开发。离别Rails许久,发现现在的版本已经是2.0了,看来Rails还是一如继往的健康成长,而且国内的许多Rails社区也充满了活力,很是开心。

Rails 2.0中发生了一些变化,最先遇见的就是分页。Rails 2.0之前的版本提供了Paginate方法,大体的写法如下:    

        Controller


        

@album_pages, @albums = paginate(:albums, 
                                         :order 
=> 'year DESC',
                                         :conditions 
=> condition,
                                         :per_page 
=> 3)


         

View

    

<% if @tag %>        
        
<%= pagination_links(@album_pages, :params => {:tag=>@tag }) %>
    
<% else %>
        
<%= pagination_links(@album_pages) %>
    
<% end %>


 

不知道为什么,这种简单舒适的写法在Rails2.0中消失了。

按照以上写法,Rails2.0会提示无法识别:pagination 方法(undefined method `paginate' for …)

现在更推荐另外一个替代插件will_paginate,下面详细说明下will_paginate的安装,使用步骤:

安装will_paginate:

1.       安装 subversion

本机必须安装subversion客户端才能完全下载will_paginate的插件包,这里提供一个下载地址:

http://subversion.tigris.org/files/documents/15/34093/svn-1.4.0-setup.exe

subversion应该被视为rails开发者的标准配置,做个广告,嘿嘿。

2.       安装 will_paginate插件包:

进入ruby的控制台,之后进入你的rails项目:键入如下命令:

ruby script/plugin install svn:  

         如果一切正常的话,will_paginate已经安装到你的web应用中了。

         你可以在应用程序中找到已安装的文件:

你也可以下载will_paginate的压缩包,当然不是官方发布的,这里提供一个下载地址:

http://www.javaeye.com/topic/154713

直接拷贝到 vendor\plugins\下即可。

代码部分:

Controller:

if params[:tag] != nil
              @posts 
= Post.search_by_tag(params[:tag], params[:page]||1)
        
else
              @posts 
= Post.search(params[:page]||1)
        End

Model:

def self.search_by_tag(search, page)
            paginate :per_page 
=> 10, :page => page,   
                       :conditions 
=> ['tag like ?'"%#{search}%"],   
            :order 
=> 'add_time'
  
end
  
  def self.search(page)
    paginate :per_page 
=> 10, :page => page,
                     :order 
=> 'add_time'
  End

View:

<%= will_paginate @posts %>

 

测试一下,如果一切正常,分页列表已经展现在你的眼前了~~~


 

修改源码:

         为了让更多的中国用户方便使用我的网站,最终还是决定把PreviousNext换成前一页和下一页,找到will_paginate中的view_helpers.rb文件,找到如下代码:

@@pagination_options = {
      :class        
=> 'pagination',
      :prev_label   
=> '&laquo; Previous',
      :next_label   
=> 'Next &raquo;',
      :inner_window 
=> 4# links around the current page
      :outer_window 
=> 1# links around beginning and end
      :separator    
=> ' '# single space is friendly to spiders and non-graphic browsers
      :param_name   
=> :page,
      :params       
=> nil,
      :renderer     
=> 'WillPaginate::LinkRenderer',
      :page_links   
=> true,
      :container    
=> true
    }


 

不用我多说了,will_paginate的基本配置信息都在这里了,help yourself吧,哈哈。

给分页栏添加样式:

         说到这里,我想顺便提及一下monorail的分页样式,这是monorail 中自带的分页控件:DiggStylePagination所生成的前端代码:
    

Code

在这里想把这种做法作为一种反例,把css标记与html代码结合在一起的坏处,在这里就不赘述,will_paginate生成的html代码是这样的:

Code


 

孰优孰劣,不言自明,will_pagnate给样式留下了友好的扩展接口,在每个需要控制样式的标签上留下了类选择器,使手动添加样式,成为了简单顺手的事。定义如下样式表:

Code

看看效果:

参考链接:

         http://www.javaeye.com/topic/154713

         http://hideto.javaeye.com/blog/108118

         http://errtheblog.com/posts/56-im-paginating-again

         http://www.javaeye.com/topic/147789

写到这里,祝Rails 用户开发顺利