我正在使用 will_paginate 列出不同页面中的大量文件。我还有一个复选框,以便为进一步分析选择文件。
控制器:
@files = FileDB.search(search_string).paginate(:per_page => 10, :page => params[:page])
看法:
<button type="button" id="check_all">Check/Uncheck all</button>
<%= button_tag :class => "btn btn-primary", :name => 'analyse' do %>Analyse<% end %>
<% @filess.each do |file| %>
<p><td> <%= check_box_tag "files[]", file.id %></td><%= file.name %></p>
lala...
我的问题是我可以选择位于一页中的文件。因此,通过单击“全部选中/取消选中”,它检查的不是所有可用文件,而是该特定页面的文件。我希望能够一起检查来自不同页面的不同文件。
示例:第 1 页有 10 个文件,第 2 页有 4 个文件。我想检查第 1 页的 5 个文件和第 2 页的所有文件,然后单击“分析”按钮,这 9 个文件必须一起分析,所以复选框应该记住来自不同页面的不同文件
提前致谢
根据 juanpastas 的解决方案进行编辑
看法:
<script type='text/javascript'>
// see note below
sessionStorage.fileIds = ' ';
// this way:
// 1. you execute the function appending just one handler
// 2. you can change content of .checkboxes-container with AJAX to do pagination
$('.checkboxes-container').on('change', ':checkbox', function(){
// search for "space id space", examples: " 1 " or " 10 "
var id = new RegExp(' ' + this.value + ' ');
// get that part of the string
var match = (sessionStorage.fileIds.match(id) || [])[0];
// toggle value, this is: replicate check box behaviour in this variable
// ids will be saved as " 1 2 3 10 15 ", spaces in both sides to eliminate special cases.
if(match) sessionStorage.fileIds = sessionStorage.fileIds.replace(id, ' ');
else sessionStorage.fileIds = sessionStorage.fileIds + this.value + ' ';
})
</script>
<script type='text/javascript'>
$('[name=analyse]').click(function(){
// " 1 2 3 10 " is sent as [1,2,3,10]
var fileIds = sessionStorage.ids.split(',').filter(function(e){if(e[0]) return e;})
// change url, check server is receiving an array.
$.get('/files', { file_ids: fileIds });
})
</script>
<%= form_for Group.new, url: what_to_do_files_path ,method: :get ,:validate => true do |f| %>
<div class="field">
<%=f.text_field :group_name, placeholder: "Group Name" %>
</div>
<%= button_tag :class => "btn btn-primary", :name => 'analyse' do %>Analyse;<% end %>
<button type="button" id="check_all" class="btn"> Check/Uncheck all</button>
<% @files.each do |file| %>
<p><td> <%= check_box_tag "files[]", file.id , false %></td>file.name</p>
<%end%>
<%end%>
控制器:
what_to_do
a = params[:file_ids].split(',')
end
它向我显示了一个错误,即 Nil cless 没有拆分功能,因此 params[:file_ids] 为空,尽管我检查了 check_boxes