0
我正在使用will_paginate以列出大量文件。我也有一個check_box爲了選擇文件進行進一步的分析。 要保存的ID在cookie而改變我以前的網頁以下的javascript:在Cookie中保存ID並將它們傳遞給ruby
<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%>
它節省的ID,但是當我改變頁面will_pagination,保存標識消失。 我不會加載之前從cookie中保存的ID。我發現有關如何將JavaScript變量傳遞給ruby或如何在ruby中捕獲$.cookie('checkedIds')
的信息很少。
這怎麼可能呢? 非常感謝。
在ruby中使用cookie [:checkedIds]或cookie的值將只給我從最後一頁保存的ID。來自第一頁的ID被覆蓋。通過更改頁面和複選新文件,cookie的值將被覆蓋,所以我無法訪問所有頁面中已檢查的所有文件。我不知道如何加載以前存儲的ID並將它們保存在javascript/rails或ruby中,以便在最後我將擁有所有已檢查的ID – Tonja
好吧,如果您想要存儲id在每次檢查後你可以使用ajax - 在每次點擊時發送檢查過的id,並將其保存在ruby一側(在數據庫或其他方面)),或者你可以進行某種限制,在那裏你保存一個被點擊的列表id-s並且每隔一段時間發送它們。其他想法可能涉及使用多個cookie(例如每頁一個cookie,每個cookie存儲該頁面上單擊的id的列表)或使用一個大cookie(提防4K限制)以及所有被點擊的id的列表。 – WTK
多個餅乾會很好,但我不知道如何檢測will_paginate中的當前頁面,以及如何在更改JavaScript時加載新頁面時將javascript分開,因此預配置信息將丟失。 Ajax會很好,但我想這需要更多的工作和時間,因爲我將不得不檢查選中的文件是否未被檢查並重新加載ajax。節流?檢查ID的列表將是很好的,但我正在做與上述JavaScript alreafdy我的問題只是,我不加載以前的id – Tonja