Rails 有内置的分页解决方案吗?

Posted

技术标签:

【中文标题】Rails 有内置的分页解决方案吗?【英文标题】:Does Rails have a built-in pagination solution? 【发布时间】:2010-11-01 07:37:21 【问题描述】:

我注意到像mislav-will_paginate 这样的分页宝石非常受欢迎。这是因为Rails没有内置的分页解决方案还是因为内置的解决方案不是很好?

【问题讨论】:

will_paginate 现在几乎是“内置”解决方案/ 好像searchlogic使用了will_paginate,所以不需要使用searchlogic来获取。不过,它看起来很酷。 rdoc.info/github/binarylogic/searchlogic/master/file/… 【参考方案1】:

在 Rails 2.0 中,ActionController 的分页功能被移除并变成了一个名为“classic_pagination”的向后兼容插件。然而,从我为自己寻找分页解决方案的过程中,共识似乎是使用“classic_pagination”并不是最佳的。

看了几个播客和几个建议后,我选择尝试will_paginate 插件并且没有回头。它快速、易于使用且维护良好。

我相信即使是 Searchlogic V2 也推荐使用它。

【讨论】:

我得出了同样的结论。 will_paginate 上的 railscasts 教程也很有帮助。【参考方案2】:

如果您使用 Rails 3 Kaminari 插件,分页将非常方便。 Github Railscasts

【讨论】:

+1 为 Kaminari。我使用 will_paginate 但 Kaminari 更好。【参考方案3】:

Rails 具有内置的分页功能,但它是一个简单的模块,并不适合所有需求。除非您有特定的分页需求,否则它应该适合大多数用途。

Here's a good article on how to use Rails pagination

【讨论】:

【参考方案4】:

我推荐searchlogic。它内置了分页和许多其他不错的东西。

轻松过滤 分页 排序

而且.. 对于所有这些好帮手。

代码说一千多个单词(不要被 HAML 的例子弄糊涂了,你可以使用普通的 erb 模板,如果你喜欢的话,代码/结构是一样的):

控制器:

  def index
    @search = User.new_search(params[:search])
    @users, @users_count = @search.all, @search.count
  end

视图中的分页内容:

== Per page: #per_page_select
== Page: #page_select

按视图排序:

  - unless @users_count.zero?
    %table
      %tr
        %th= order_by_link :account => :name
        %th= order_by_link :first_name
        %th= order_by_link :last_name
        %th= order_by_link :email
      - @users.each do |user|
        %tr
          %td= user.account? ? user.account.name : "-"
          %td= user.first_name
          %td= user.last_name
          %td= user.email

简单、简单、快速的过滤器:

  - form_for @search do |f|
    - f.fields_for @search.conditions do |users|
      = users.text_field :first_name_contains
      = users.date_select :created_after
      - users.fields_for users.object.orders do |orders|
        = orders.select :total_gt, (1..100)
    = f.submit "Search"

一切都可以一起工作,因此更改页面然后排序,添加过滤器不会丢失任何其他设置:)。

所有你需要的是在你的环境中。rb:

config.gem "searchlogic"

并安装它:rake gems:install

还可以查看online example

【讨论】:

这与众多其他分页解决方案相比如何?为什么选择这个而不是其他的? 嗯,我之前使用的是will_paginate,它曾经是默认的分页器。 searchlogic 的美妙之处在于 a) 一切都是集成的(您不必让分页器一起过滤/排序,这是自动/神奇地完成的)。 b) 它是非常积极开发的 atm,看起来非常成熟。 c) 开发人员生成了非常漂亮和直观的库,我还推荐他的身份验证库“authlogic”。在文档中,您会发现一些说明为什么 authlogic 比其他 auth 插件“更好”:)。但只需在您的一个数据视图中试用它们.. 他的博文:binarylogic.com/2009/06/09/searchlogic-v2-beta-released 我仍然坚持我的观点,即 searchlogicv1 是一个非常好的库,到目前为止它并没有让我失望:)。 Searchlogic 不推荐与 Rails3 一起使用。 是什么让你这么说?我想它还没有准备好,但是还有其他反对 rails3/searchlogic 组合的原因吗?

以上是关于Rails 有内置的分页解决方案吗?的主要内容,如果未能解决你的问题,请参考以下文章

Advantage 数据库中的分页

Rails RESTful 应用程序中的分页和排序

删除有机群组人员列表中的分页

RESTful 服务中的分页

Rails 5.2 上 jquery DataTables 和 will_paginate gem 的分页问题

.NET Core API 项目中的分页