列表中的复选框使用rails will_paginate

时间:2018-01-26 09:20:25

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

我的列表中包含每行的复选框。所有过程都可以在一页中完成。当记录超过一页并需要检查第2页或第3页上的记录时,丢失了上一页的选中值。我怎么解决这个问题。给我一些好主意。

1 个答案:

答案 0 :(得分:0)

分页时,您的页面仅显示一些记录,并且仅显示这些记录的复选框。更改页面时,您将显示一组新记录,并带有自己的复选框(而不是其他复选框)。每个页面都是对show(或其他)方法的独立请求。

您应该做的是保存先前选中的复选框列表,在控制器中,将此列表传递到新的页面视图,并将它们作为参数添加到新页面的链接中。

我之前已经完成了,但我手头没有代码,但是它是这样的:

控制器

def show
  @previous_checks = []
  params[:previous_checks].each do |c|
    @previous_checks << c
  end
  params[:checks].each do |c|
    @previous_checks << c
  end
  #rest of normal code...
end

在视图中,添加检查:@previous_checks在指向新页面的链接中:

<%= will_paginate(xxxxxx, :params => { :previous_checks => @previous_checks }) %>

在控制器中,当您在提交表单时处理检查时,只需使用:checks和:previous_checks。

您可能需要对代码进行一些更改以处理先前检查和参数的数组,因为可能需要进行某些转换