我的列表中包含每行的复选框。所有过程都可以在一页中完成。当记录超过一页并需要检查第2页或第3页上的记录时,丢失了上一页的选中值。我怎么解决这个问题。给我一些好主意。
答案 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。
您可能需要对代码进行一些更改以处理先前检查和参数的数组,因为可能需要进行某些转换