29

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

4

4 回答 4

28

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

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

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

于 2009-06-09T10:15:29.983 回答
15

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

于 2011-06-16T09:52:19.840 回答
8

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

这是一篇关于如何使用 Rails 分页的好文章

于 2009-06-08T21:58:48.523 回答
3

我会推荐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"

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

您所需要的只是在您的 environment.rb 中:

config.gem "searchlogic"

并安装它:rake gems:install

另请查看在线示例

于 2009-06-08T22:06:19.507 回答