【问题标题】:Saving ids in the cookies and passing them to ruby在 cookie 中保存 id 并将它们传递给 ruby
【发布时间】:2013-08-07 11:16:07
【问题描述】:

我使用 will_paginate 来列出大量文件。我还有一个复选框,以便为进一步分析选择文件。 在更改我使用以下 javascript 的页面时将 id 保存在 cookie 中:

 <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>&nbsp;&nbsp;<%= file.name %></p> 
 <%end%>

它会保存 ID,但是当我使用 will_pagination 更改页面时,保存的 ID 会消失。 我没有从 cookie 中加载之前保存的 ID。我几乎没有找到关于如何将 javascript 变量传递给 ruby​​ 或如何在 ruby​​ 中捕获 $.cookie('checkedIds') 的信息。

怎么可能呢? 非常感谢。

【问题讨论】:

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


    【解决方案1】:

    您不能 Javascript 变量传递给Ruby 或其他任何东西。

    在这种特殊情况下,您可以在服务器(ruby)端访问您之前在客户端使用 Javascript 设置的“checkedIds”cookie 值。在 Rails 中就像cookies[:checkedIds] 一样简单

    在 ruby​​ 方面,使用 cookie 的值来生成您选择的内容。

    【讨论】:

    • 在 ruby​​ 中使用 cookies[:checkedIds] 或 cookie 的值只会给我从最后一页保存的 ID。第一页的 ID 被覆盖。通过更改页面并选中新文件,cookie 的值被覆盖,因此我无法访问在所有页面中检查的所有文件。而且我不确定如何加载以前存储的 ID 并将它们保存在 javascript/rails 或 ruby​​ 上,以便最后我将检查所有 ID
    • 好的,如果您想在每次检查后存储 id 值,这是一个决定问题(您可以使用 ajax - 在每次点击时发送检查的 id 并将其保存在 ruby​​ 端(在数据库或其他任何地方)),或者您可以进行某种节流,在其中保留单击的 id-s 列表并不时发送它们。其他想法可能涉及使用多个 cookie(例如,每页一个 cookie,每个 cookie 存储该页面上点击的 id 列表)或使用一个大型 cookie(注意 4K 限制)和所有点击的 id 列表。
    • 多个 cookie 会很好,但我不知道如何在 will_paginate 中检测当前页面以及如何分隔 javascript,因为在更改页面时加载了新的 javascript,因此以前的信息丢失了。 Ajax 会很好,但我想这将需要更多的工作和时间,因为我必须检测检查的文件是否未检查并重新加载 ajax。节流?检查的 id 列表会很好,但我用上面的 javascript 做这件事我的问题只是我没有加载以前的 id
    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2018-05-31
    • 2014-05-09
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多