rails的分页插件will_paginate

在最近的项目中,用到了rails的分页插件will_paginate  因为是第一次使用这个插件,所以不甚了解,就在网上google

了一阵子,看了看相关的说明,明白了大概,在此记录下来,以备忘记。

      下面我就来讲解一下关于这个插件的一些注意事项,因为我是rails的初学者,所以这里用的是rails3,关于以前版本的rails,我了解的不多,在rails3中,用will_paginage有两种方式,第一种就是用plugin形式,安装方法:

这里有个viki关于安装的说明,https://github.com/mislav/will_paginate/wiki /installation,这里我只是想说一下关于这个插件的配置参数。首先,如果你是用插件安装的,那么找到vendor/plugins /will_paginate/lib/will_paginate/view_helpers.rb,这个helper就是这个插件的关于现实的 helper,

@@pagination_options  =  {  : class   =>   ' pagination ' ,
        
: previous_label =>   ' 上一页 ' ,   #这个一般是用在我们中文网站上的时候需要进行改动,默认是 << Previous
         : next_label    =>   ' 下一页 ' ,   #这个一般是用在我们中文网站上的时候需要进行改动,默认是 Next >>
         : inner_window  =>   4 ,   # inner_window  控制显示当前页临近的多少个链接 ,默认是4
         : outer_window  =>   1 , # outer_window 控制显示首/末页临近的多少个链接,默认是1

        :page_links => false, # 如果是false的时候,只显示上一页和下一页 (默认是 true)
         : separator     =>   '   ' ,   # 这个参数是用来设置页码之间 的分隔符的,用空格或者(|)或者其他的都可以
         : param_name    =>   : page ,   #这个参数是用来我们点击页码连接的时候传递的参数的名称,一般不用改动
        :class           =>  'pagination' ,  #这个是用来给分页的元素家heml的类名的,可以通过这个类名进行样式布局。
        }

 

       以上说的是你以插件的形式安装的,如果你用的而是rubygems形式安装的,那么这个配置你就需要到配置文件里面去改了,如果你的项目时2.x的,那么 你的配置文件的改动应该是在config/environment.rb里面,加上类似于这样的几句,来进行相关的默认修改:

  1. WillPaginate::ViewHelpers.pagination_options[ :class ] =  "yourclass"   
  2. WillPaginate::ViewHelpers.pagination_options[:previous_label ] =  "前一页"   
  3. WillPaginate::ViewHelpers.pagination_options[:next_label ] =  "后一页"  

       如果你的项目时3.0以上的版本的话,那么你的这个配置修改就要到 config/initalizer下新建一个文件(例如:will_paginate.rb),在这个文件里面加上类似于上面的三句的配置,来进行修改。

 

用法:

修改控制器的方法,加上类似下面的代码:
@articles = Article.paginate :page => params[:page], :per_page => 5 #这个是多少条数据。

修改对应的模板文件,加上类似下面的代码:

<%= will_paginate @articles %>

 

格式: 继承WillPaginate::ActionView::LinkRenderer文件(lib文件夹)

 

#encoding:utf-8

 

class XXXLinkRenderer < WillPaginate::ActionView::LinkRenderer

 

 

 

  protected

 

 

 

  #[ '« 首页', '‹ 前一页', '后一页 ›', '末页 »' ]

 

 

 

  def html_container(html)

 

    tag :nav, html, container_attributes

 

  end

 

 

 

  def page_number(page)

 

    if  page == current_page

 

      tag :span, page, :class => 'page current'

 

    else

 

      tag :span, link(page, page, :rel_value => nil), :class => 'page'

 

    end

 

  end

 

 

 

  def previous_or_next_page(page, text, classname)

 

 

 

    if page

 

      if classname=='previous_page'

 

        tag(:span, link('« 首页', 1), :class => 'first')+tag(:span, link(text, page), :class => classname[0..3])

 

      else

 

        tag(:span, link(text, page), :class => classname[0..3])+tag(:span, link('末页 »', total_pages), :class => 'last')

 

      end

 

    else

 

      nil

 

    end

 

  end

 

 

 

end

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值