当前页面上的访问集合对象w将_paginate

时间:2015-09-23 19:45:22

标签: ruby-on-rails ruby pagination will-paginate

技术规格:ruby 2.1.5p273,Rails 4.2.3。

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

在Projects控制器中:

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

使用Pry,我可以得到:

$ @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

2 个答案:

答案 0 :(得分: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作为记录集。

答案 1 :(得分:-2)

我从未使用will_paginate宝石,但我相信@paginate_projects它是您的ActiveRecord项目与其他方法的关系。

来自您提供的链接:

  

从分页查找返回的数组实际上就是这种情况的实例   小班。你可能会认为WillPaginate :: Collection是一个普通的   具有一些额外属性的数组。视图使用这些属性   帮助者生成正确的页面链接。