2015-09-23 43 views
4

技术规格:ruby 2.1.5p273,Rails 4.2.3。当前页面上的访问集合对象w will_paginate

我正在使用will_paginate gem在页面上分页我的模型。是否可以访问正在当前页面上打印的模型的实例?

在项目控制器:

@paginate_projects = @projects.keys.paginate(:page => params[:page], :per_page => 7) 

使用撬,我可以得到:

$ @paginate_projects.current_page => 2 

我希望能够做一些事情,如:提前

$ @paginate_projects.current_page.projects => [Project #8, Project #9, Project #10, Project #11, Project #12, Project #13, Project #14] 

谢谢寻求帮助。我也期待在这个: http://www.rubydoc.info/github/mislav/will_paginate/WillPaginate/Collection

+0

'paginate'方法从您的模型中返回一个'ActiveRecordRelation'。它就像一个可以遍历和操作的对象的“数组”。没有真正理解你的问题。 – MurifoX

+1

嗨@MurifoX,我想只能访问current_page的那个对象数组。你知道该怎么做吗? – Brit200313

回答

-2

我从来没有用过will_paginate宝石,但我相信@paginate_projects它是用一些其他方法项目的ActiveRecord的关系。

从链接您提供:

阵列从分页的发现返回的,其实这 小类的实例。您可以将WillPaginate :: Collection视为一个具有一些额外属性的普通 数组。这些属性被视图 助手用来生成正确的页面链接。

0

相反分页上@projects.keys(我不知道这是什么将返回),我建议直接分页@projects(或可能Project)。

当您在模型或ActiveRecord集合或作用域上调用#paginate时,它仅返回该页面的记录。

比方说,在你的控制器,你这样做:

@projects = Project.some_scope_or_query 
@paginate_projects = @projects.paginate(page: params[:page], per_page: 7) 

在你看来/模板时,@paginate_projects变量将包含的不仅是项目的当前页面的价值。

就个人而言,我建议直接在模型上分页,除非在控制器中进行特别复杂的逻辑。例如:

@projects = Project.some_scope_or_query 
        .paginate(page: params[:page], 
           per_page: 7) 

在您看来,您将使用@projects作为您的记录集合。

相关问题