1

我在will_paginateRails 3.2 中使用 Rails gem。我的数据库中有大约 750 部电影,我将它们放在我的视图中的一个表中。这是火腿:

%h1 Listing movies
%table.table.table-striped
  %tr
    %th No.
    %th Name
    %th Rating
    %th
  - @movies.each_with_index do |movie, index|
    %tr
      %td= (index + 1) 
      %td= link_to movie.name, edit_movie_path(movie)
      %td= movie.rating
      %td= link_to 'Delete', movie, method: :delete, data: { confirm: 'Are you sure?' }

我已经default_scope order: 'name ASC'在我的movie.rb模型中按字母顺序对它们进行排序,这each_with_index使我能够在表格中获得一致的数字列表。

问题是,现在我正在使用分页,index电影数组的每一页都从头开始,所以它总是说 1-10。

问题是,我怎样才能让第 1 页给出 1-10,然后在第 2 页上说 11-20,等等?

4

1 回答 1

1

看来您可能必须修改 will_paginate 源代码才能使页面索引按您的预期工作(请参阅此 SO Post)。

我将只使用在控制器中声明并在我的视图中递增的会话变量来解决这个问题。

session[:index] ||= 0
if params[:search]
   session[:index] = 0
end

# View
<% session[:index] = session[:index] + 1 %>

[编辑]
另一种解决方案,感谢@pjam 评论,use params[:page]由 will_paginate 返回。例如,如果您设置:per_page => 5,则当前页面的索引可以计算如下:

@offset = (params[:page] - 1) * params[:per_page] + 1

# View
index + @offset
于 2013-01-07T00:42:53.910 回答