.paginate(...)调用属于哪里?

Eri*_* Hu 0 ruby-on-rails will-paginate ruby-on-rails-3

现在我在我的控制器中有这个:

def index
  @votes = Vote.paginate(:page => params[:page], :order=>"created_at DESC")
end
Run Code Online (Sandbox Code Playgroud)

但我正在考虑将.paginate移动到views/index.html.erb(或该目录中的部分).Paginate在我看来它似乎属于View,因为它管理投票集合的显示方式.我是否正确理解MVC分离?

Jes*_*ott 5

不,你想要它在控制器中

#paginate 改变您的查询,使其具有限制和起点.

因此,如果您有100条记录,那么第2页的分页将会调用一些东西

select * from votes LIMIT(30) OFFSET(30)
Run Code Online (Sandbox Code Playgroud)

它只会返回30条记录.如果你在视图中做了同样的事情,你的@votes将有1000条记录,并切断所需的内容.

您的视图应该是相当愚蠢的并且迭代控制器提供的记录(它从模型中获取).