如何使用will_paginate对预先排序的记录集合进行分页?

理查德·G

如何使用will_paginate对预先排序的记录集合进行分页?

环境:Ruby 2.0.0,Rails 4.0.3,Windows 8.1,PostreSQL,Datatable 1.12.2,Will_Paginate 3.0.5

我正在尝试使用Railscast 340代码完成数据表的实现。我有几列需要独立进行排序,因为它们存在于关联中,无法直接访问。为了简单起见,我仅在一个方向上显示了一列。

排序在标准情况下和“ product_location”情况下均有效。正确的记录在记录集合中可用,并且在两种情况下都以正确的顺序排列。

在“ product_location”情况下,当我尝试对结果进行分页时,will_paginate似乎从表中检索记录,而不是使用我的记录集合。我最终会以错误的顺序找到错误的记录。这个动作对我来说没有任何意义,因此我必须缺少一些东西。

标准排序在所有列上都可以双向使用。

我的代码如下,其后是Railscast 340的原始代码:

  def products
    @products ||= fetch_products
  end

  def fetch_products
    case sort_column
      when "product_location"
        products = Product.all
        products.sort_by!{|product| product.readable_loc} # product_location sort
      else
        products = Product.order("#{sort_column} #{sort_direction}") # standard sort
    end

    # products is correctly sorted in both cases at this point

    products = products.page(page).per_page(per_page)

    # At this point, products is correctly sorted in the standard case but not in the "product_location" case
    # In "product_location" case, pagination seems to be accessing the table directly again, not using the record collection?

    if params[:sSearch].present?
      products = products.where("stock_number like :search", search: "%#{params[:sSearch]}%")
    end
    products
  end

原始代码是:

  def products
    @products ||= fetch_products
  end

  def fetch_products
    products = Product.order("#{sort_column} #{sort_direction}")
    products = products.page(page).per_page(per_page)
    if params[:sSearch].present?
      products = products.where("name like :search or category like :search", search: "%#{params[:sSearch]}%")
    end
    products
  end
edariedl

这是因为Product.all返回实例ActiveRecord::Relationproducts.sort_by!从数据库中获取所有记录,并使用ruby对它们进行排序。比起调用products = products.page(page).per_page(per_page)它,它会使用new创建新的sql查询,limitoffset获取给定页面上的记录。

因此,如果要使用will_paginate进行分页,则不能使用.sort_by!method进行数据排序,但是必须对记录进行排序,并使用Products.order这些记录通过SQL对数据库中的记录进行排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与Railscast 340一样,如何使用datatable / will_paginate对“外国”列进行排序?

来自分类Dev

如何像Railscast 340一样使用datatable / will_paginate对“外国”列进行排序?

来自分类Dev

用预先排序的分区对数组进行排序

来自分类Dev

如何避免使用will_paginate进行表扫描?

来自分类Dev

如何对使用UI Bootstrap分页进行分页的AngularJS中的所有记录进行排序和筛选

来自分类Dev

如何通过will_paginate取消对分页对象的分页?

来自分类Dev

Rails will_paginate gem与angular.js进行分页

来自分类Dev

Rspec使用will_paginate进行订购

来自分类Dev

Will_Paginate分页链接丢失

来自分类Dev

用户可更改的分页,最好使用will_paginate gem

来自分类Dev

MongoDB-使用分数排序对记录进行分页的问题

来自分类Dev

如何从子记录集合中获取重要的祖父母记录集合?

来自分类Dev

Laravel-如何按Dec顺序对外部API进行排序并选择记录集

来自分类Dev

使用laravel paginate()和vuex进行分页,

来自分类Dev

如何根据另一个预先排序的字符串向量排序包含字符串的向量?

来自分类Dev

如何在rails中使用will_paginate和ransack

来自分类Dev

如何在rails中的模型缓存中使用will_paginate?

来自分类Dev

如何在Sunspot Solr中使用will_paginate

来自分类Dev

如何在rails中的模型缓存中使用will_paginate?

来自分类Dev

与bootstrap3一起使用的Rails 4分页,will_paginate和Kaminari

来自分类Dev

与bootstrap3一起使用的Rails 4分页,will_paginate和Kaminari

来自分类Dev

基于分页搜索进行过滤,即在整个记录集上

来自分类Dev

如何对通用对的集合进行排序

来自分类Dev

记录集分页不起作用

来自分类Dev

will_paginate分页在AJAX刷新上呈现两次

来自分类Dev

will_paginate分页链接javascript无法正常工作

来自分类Dev

在分页列表框中对集合进行排序和筛选

来自分类Dev

Redis,分页排序的集合

来自分类Dev

然后使用neo4j-will_paginate进行分页

Related 相关文章

  1. 1

    与Railscast 340一样,如何使用datatable / will_paginate对“外国”列进行排序?

  2. 2

    如何像Railscast 340一样使用datatable / will_paginate对“外国”列进行排序?

  3. 3

    用预先排序的分区对数组进行排序

  4. 4

    如何避免使用will_paginate进行表扫描?

  5. 5

    如何对使用UI Bootstrap分页进行分页的AngularJS中的所有记录进行排序和筛选

  6. 6

    如何通过will_paginate取消对分页对象的分页?

  7. 7

    Rails will_paginate gem与angular.js进行分页

  8. 8

    Rspec使用will_paginate进行订购

  9. 9

    Will_Paginate分页链接丢失

  10. 10

    用户可更改的分页,最好使用will_paginate gem

  11. 11

    MongoDB-使用分数排序对记录进行分页的问题

  12. 12

    如何从子记录集合中获取重要的祖父母记录集合?

  13. 13

    Laravel-如何按Dec顺序对外部API进行排序并选择记录集

  14. 14

    使用laravel paginate()和vuex进行分页,

  15. 15

    如何根据另一个预先排序的字符串向量排序包含字符串的向量?

  16. 16

    如何在rails中使用will_paginate和ransack

  17. 17

    如何在rails中的模型缓存中使用will_paginate?

  18. 18

    如何在Sunspot Solr中使用will_paginate

  19. 19

    如何在rails中的模型缓存中使用will_paginate?

  20. 20

    与bootstrap3一起使用的Rails 4分页,will_paginate和Kaminari

  21. 21

    与bootstrap3一起使用的Rails 4分页,will_paginate和Kaminari

  22. 22

    基于分页搜索进行过滤,即在整个记录集上

  23. 23

    如何对通用对的集合进行排序

  24. 24

    记录集分页不起作用

  25. 25

    will_paginate分页在AJAX刷新上呈现两次

  26. 26

    will_paginate分页链接javascript无法正常工作

  27. 27

    在分页列表框中对集合进行排序和筛选

  28. 28

    Redis,分页排序的集合

  29. 29

    然后使用neo4j-will_paginate进行分页

热门标签

归档