技术规格: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
答案 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是一个普通的 具有一些额外属性的数组。视图使用这些属性 帮助者生成正确的页面链接。