Ruby on rails Rails将分页:如何在页面间保持一致的数组索引?

Ruby on rails Rails将分页:如何在页面间保持一致的数组索引?,ruby-on-rails,haml,will-paginate,Ruby On Rails,Haml,Will Paginate,我正在使用Railswill\u paginategem和Rails 3.2。我的数据库中有大约750部电影,我把它们放在我视图中的一个表中。以下是haml: %h1 Listing movies %table.table.table-striped %tr %th No. %th Name %th Rating %th - @movies.each_with_index do |movie, index| %tr %td= (inde

我正在使用Rails
will\u paginate
gem和Rails 3.2。我的数据库中有大约750部电影,我把它们放在我视图中的一个表中。以下是haml:

%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?' }
在我的
movie.rb
模型中,我有了
默认的范围顺序:“name ASC”
,可以按字母顺序对它们进行排序,而
每个带有索引的\u
使我能够在表中有一个一致的数字列表

问题是,现在我使用分页,电影数组的
索引从每页开始,所以它总是说1-10


问题是,如何让第1页给出1-10,然后在第2页给出11-20,等等?

看来您可能需要修改will_paginate源代码,以使页面索引按预期工作(请参阅)

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

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

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

似乎您必须修改will_paginate源代码,以使页面索引按预期工作(请参阅)

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

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

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

作为旁注,我认为使用session变量会有点过头。由于您有可用的页面参数和在模型中定义的每页常量,您可以创建一个帮助器,为您提供这两个值的当前偏移量这听起来像是正确的轨迹,但由于某些原因,
params[:每页]
返回零,尽管我在控制器的
索引
方法中有这样的功能:
@movies=Movie.search(params[:search]).paginate(per_page:10,page:params[:page])
而不是
params[:per_page]
,但我尝试了
Movie.per_page
,效果不错。这是最好的解决办法吗?如果是,是否要将其添加到编辑中?@nickcoxdotme:per_page只是一个常量。你也可以在算术中使用积分值,比如5。变量单位是页面参数。作为旁注,我认为使用session变量会有点过头。由于您有可用的页面参数和在模型中定义的每页常量,您可以创建一个帮助器,为您提供这两个值的当前偏移量这听起来像是正确的轨迹,但由于某些原因,
params[:每页]
返回零,尽管我在控制器的
索引
方法中有这样的功能:
@movies=Movie.search(params[:search]).paginate(per_page:10,page:params[:page])
而不是
params[:per_page]
,但我尝试了
Movie.per_page
,效果不错。这是最好的解决办法吗?如果是,是否要将其添加到编辑中?@nickcoxdotme:per_page只是一个常量。你也可以在算术中使用积分值,比如5。变量单位为页面参数。