我注意到像mislav-will_paginate
这样的分页宝石很受欢迎。这是因为Rails没有内置的分页解决方案,还是因为内置的解决方案不是很好?
答案 0 :(得分:28)
在Rails 2.0中,ActionController的分页功能被删除,并变成了一个名为'classic_pagination'的向后兼容插件。但是,从我为自己搜索分页解决方案来看,共识似乎是使用'classic_pagination'并不是最佳选择。
在观看了几个播客之后,经过多次推荐后,我选择尝试使用will_paginate插件并且没有回头看。它快速,易于使用且维护良好。
我相信即使是Searchlogic的V2也建议使用它。
答案 1 :(得分:15)
如果您使用Rails 3,Kaminari插件将非常方便分页。 Github Railscasts
答案 2 :(得分:8)
Rails具有内置分页功能,但它是一个简单的模块,并不适合所有需求。除非你有特定的分页需求,否则它应该适合大多数目的。
答案 3 :(得分: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"
一切都在一起工作,所以更改页面然后排序,添加过滤器可以在不丢失任何其他设置的情况下工作:)。
您需要的只是在您的环境中.rb:
config.gem "searchlogic"
并使用以下内容进行安装:rake gems:install
同时结帐online example