我参加在线Rails课程大约一个月,目前的任务是在没有will_paginate gem帮助的情况下实现分页。我正在构建的站点显示了一个主题列表,每个主题都包含多个帖子。目标是显示每页10个主题或帖子。
以下是我到目前为止所拥有的:
我创建了一个Paginate模块,在这个模块中,Post和Topic模型可以调用:
module Paginate
def paginate(args = {})
self.limit(10).offset(args[:page] * 10)
end
end这就是我在主题控制器中调用的内容:
def index
params[:page] ||= 0
@topics = Topic.paginate(page: params[:page].to_i)
authorize @topics
end我知道这只会显示前10个主题,我需要在url中手动输入一个查询字符串来显示每组10 (例如/topics?page=1)。
有人对视图助手方法有什么建议吗?我不知道如何写一些东西来生成到每组10的html链接。
谢谢,
哑光
发布于 2015-03-06 12:31:01
到目前为止,代码中缺少的主要内容是,分页方法需要以某种方式返回,以及结果数组,记录总数,即如果不分页地进行搜索,您将得到的数字。您需要这样做的原因是,您知道如何构造助手,在最简单的情况下,每个页面都有一个链接。
如果你的页码是10,而且有46条记录,那总共是5页。因此,您的助手将有链接到第1页,第2页,第3页,第4页,第5页,也可能是“先前”和“下一步”,或类似的东西。
WillPaginate通过返回一个新的对象类进行通信,这个类扩展了Array (或者扩展了ActiveRecord::Collection或其他您通常从Topic.all获得的信息),并添加了一些额外的方法,比如告诉您额外信息的total_entries。
这样做的好处是,由于分页返回与普通搜索一样的类型的,加上附加了一些额外的信息,您可以为对非分页搜索的分页搜索提供补贴,而不必更改所有其他代码:这就像一个带有额外“内容”的普通搜索。
您真正需要的唯一额外信息是"total_entries“数字:您知道需要哪个页面以及每个页面需要多少个结果,因此您可以从这三个数字中计算出对分页助手所需的所有其他信息。
注意,我不是在这里给你代码,只是一个指向正确方向的指针。
https://stackoverflow.com/questions/28898601
复制相似问题