【问题标题】:Custom Pagination with Sort, Rails 3使用排序自定义分页,Rails 3
【发布时间】:2011-09-09 00:07:47
【问题描述】:

我有一个 rails 3 应用程序,它按用户投票数显示用户提交的内容。我有一个名为“rank”的模型方法,可以计算每次提交的分数。目前,在列出所有提交时,我在 submits_controller.rb 中使用以下内容

  def index
    @submissions = Submission.all.sort_by(&:rank).reverse
  end

但是,我想为此添加分页,而且似乎 'will_paginate' 或 'kamninari' 在这里都不能正常工作。这是因为我需要在分页之前按排名对数据库列进行排序。有没有更好的方法来表达我的查询,以便可以使用这些 gem 之一创建分页,或者您知道一个好的自定义分页解决方案吗?

谢谢!

【问题讨论】:

  • 我不明白为什么这对你不起作用。使用 will_paginate,我尝试了以下操作,它似乎返回了预期的结果:@submissions = Submission.all.sort_by(&:rank).reverse.paginate(:page => 1).
  • 我得到 NoMethodError: undefined method `paginate' for #<0x103212330>

标签: ruby-on-rails ruby-on-rails-3 sorting pagination


【解决方案1】:

也许您可以在 SQL 中计算排名?或者,添加一列并将其与记录一起保存(例如 before_save :calculate_rank)。

【讨论】:

    【解决方案2】:

    这最终奏效了:

    @submissions = Submission.all.sort_by(&:rank).reverse
    @submissions = Kaminari.paginate_array(@submissions).page(params[:page]).per(25)
    

    【讨论】:

    • 回想起来应该是这样的:@submissions = Submission.order('rank asc').page(params[:page]).per(25)
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多