我要解决分页的问题 也就是只显示前 100 页 举例来说
names = ["Bozhidar", "Steve", "Sarah"]
names.each do |n|
puts n
end
以上属于傻缺模式 解决方法还在找
#3 楼 @mimosa 额 貌似我的情况还不太好解决。。。让我整理整理 看看怎么说比较清楚 #4 楼 @luikore #1 楼 @Rei
恩 是这样滴
#controller
@search = User.solr_search do
#一大波代码
paginate :page => param[:page], :per_page => 10
end
@re = @search.results
#views
<table>
<% @re.each do |r| %>
<tr>
<td><%= r.name %></td>
</tr>
<% end %>
</table>
<%= "总数:#{number_with_delimiter(@search.total)}"%>
<%= paginate @re %>
如果改成@re = @search.results.first(1000)
会报错
undefined method ‘current_page' for #<Array
但@search.results本身也是 Array 啊。。。
现在的结论是因为分页数据在之前就完成了 所以后来截取一段造成错误...什么的
想来想去觉得好像只有在paginate :page => param[:page], :per_page => 10
这句设定一个上限 才能解决
#8 楼 @ChanceDoor 首先查询过程是交给搜索引擎插件执行的,ActiveRecord 的分页插件的 :page :per_page 参数只能转换为数据库查询,所以要自己转换 :limit,:offset 这些参数输入给搜索引擎的查询。
然后搜索引擎查询会返回一个结果集,包含结果数组,和 limt、offset、total_count 之类的信息,用这些信息组装一个分页插件能理解的结果集对象。具体要看分页插件的文档或者源码。