rails中weill_paginate的paginate方法中不能使用额外参数的解决办法

简介:

    我们知道高版本中的rails中的分页功能已经放在will_paginate这个gem中,我们在控制器方法中往往需要调用其paginate方法来实现分页数据集控制,举个例子:正常的情况我们想要每页显示10条记录可以这么写:

Item.paginate(page:params[:page],per_page:10)

但是我们又想要降序排列记录呢?书上给出的例子如下:

Item.paginate(page:params[:page],per_page:10,order:'created_at DESC')

可惜该方法在新的rails中已不能使用!通过查看will_paginate的源代码可以看到,原因是如果paginate的调用包含其他参数的话,会调用Active_Record::Relation中的实例方法apply_finder_options:

module Pagination
      def paginate(options)
        options  = options.dup
        pagenum  = options.fetch(:page) { raise ArgumentError, ":page parameter required" }
        per_page = options.delete(:per_page) || self.per_page
        total    = options.delete(:total_entries)

        count_options = options.delete(:count)
        options.delete(:page)

        rel = limit(per_page.to_i).page(pagenum)
        puts "#{'*'*100}:#{rel}\#"
        rel = rel.apply_finder_options(options) if options.any?
        rel.wp_count_options = count_options    if count_options
        rel.total_entries = total.to_i          unless total.blank?
        rel
      end
end

可是该方法在新rails中不存在了。解决办法是在控制器调用paginate前排序即可:

@orders = Order.order('created_at DESC').paginate(page:params[:page],per_page:10)

相关文章
|
18天前
uView queryParams 对象转URL参数
uView queryParams 对象转URL参数
15 0
|
Unix Linux Shell
patch 命令用法详解(转)
patch,是打补丁的命令,有很多用法,见帮助#man patch patch -p0       (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0",表示不去掉,为全路径) patch -p1       (“p”后面的数字"1",表示去掉前第一个路径) fetch http://people.
9403 0
|
7月前
|
Java 编译器
JDK21更新内容:RedordPatterns
JDK21更新内容:RedordPatterns
|
10月前
|
前端开发 Java 数据库
pagination分页插件的getResult明明有数据,但是getTotal方法为0
pagination分页插件的getResult明明有数据,但是getTotal方法为0
168 0
|
PHP
PHP:laravel自定义分页page查询方法
PHP:laravel自定义分页page查询方法
88 0
|
传感器 编解码 数据可视化
costmap_common_params.yaml参数解析和修改要点
costmap_common_params.yaml参数解析和修改要点
1308 1
单字段测试 xpath+jpath+re+requests+phantomjs
单字段测试 xpath+jpath+re+requests+phantomjs
46 0
|
JSON JavaScript 数据格式
HackerNews05-通过使用url模块的parse方法获取用户get提交的数据|学习笔记
快速学习 HackerNews05-通过使用url模块的parse方法获取用户get提交的数据
103 0
HackerNews05-通过使用url模块的parse方法获取用户get提交的数据|学习笔记
|
前端开发 开发者 iOS开发
通过 url 参数 parameters 和 script tag 属性来配置 SAP UI5 运行时
通过 url 参数 parameters 和 script tag 属性来配置 SAP UI5 运行时
通过 url 参数 parameters 和 script tag 属性来配置 SAP UI5 运行时
abap开发function module时使用tables传递参数报错过时的解决方法
如下图,我写了一个Function Module我要在tables中添加一个参数TABLES参数已过时不管怎么点击保存按钮,一直报错,怎么办呢?不管是不是过时,狂点回车,就保存了
1667 0