will_paginate уничтожает сохраненные идентификаторы при смене страницы
Я использую will_paginate для того, чтобы перечислить огромное количество файлов. У меня также есть флажок для выбора файлов для дальнейшего анализа. Чтобы сохранить идентификаторы в куки при смене страниц, я использовал следующий javascript:
<script src="/assets/jquery.cookie.js" type="text/javascript"></script>
<script type="text/javascript">
var checkedIds = []
$('.checkmeplease').on("change", function(){
if($(this).is(':checked')) {
checkedIds.push($(this).val())
}
else {
checkedIds.splice(checkedIds.indexOf($(this).val()), 1);
}
$.cookie('checked_file_ids', checkedIds,{path:'/'});
});
</script>
Мои флажки:
<% @files.each do |file| %>
<p><td> <%= check_box_tag "files[]", file.id,false,:class=>'checkmeplease' %></td> <%= file.name %></p>
<%end%>
Он сохраняет идентификаторы, но когда я изменяю страницу с помощью will_pagination, сохраненные идентификаторы исчезают.
Я был также представлен этот код:
<script type="text/javascript">
var checkedIds = $.cookie('checked_file_ids');
$('p td input[type=checkbox]').on('change', function () {
if($(this).is(':checked')) {
checkedIds.push($(this).val())
}
else {
checkedIds.splice(checkedIds.indexOf($(this).val()), 1);
}
$.cookie('checked_file_ids', checkedIds);
})
</script>
Но $('p td input[type=checkbox]').on('change', function ()
не похоже на работу.
Где моя ошибка? Как я могу сохранить идентификаторы с предыдущих страниц? Большое спасибо.
1 ответ
Используйте свой первый пример, но вместо этой строки:
var checkedIds = []
Используйте эту строку из вашего второго примера.
var checkedIds = $.cookie('checked_file_ids');
Проблема, которую я вижу в первом примере, заключается в том, что вы никогда не загружаете ранее сохраненные идентификаторы из файла cookie. Итак, перейдите на вторую страницу, когда вы проверяете некоторые из них, вы перезаписываете предыдущие значения.