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

时间:2011-03-16 21:51:20

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

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

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

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

1 个答案:

答案 0 :(得分:5)

不,你想要它在控制器中

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

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

select * from votes LIMIT(30) OFFSET(30)

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

您的视图应该是相当愚蠢的,并且会对Controller提供的记录进行迭代(它从模型中获取)。