Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何使用cookies来存储复杂信息,然后根据数据动态触发操作?_Javascript_Ruby On Rails_Ajax_Cookies - Fatal编程技术网

Javascript 我如何使用cookies来存储复杂信息,然后根据数据动态触发操作?

Javascript 我如何使用cookies来存储复杂信息,然后根据数据动态触发操作?,javascript,ruby-on-rails,ajax,cookies,Javascript,Ruby On Rails,Ajax,Cookies,我有一个简单(但不知怎么复杂)的问题。基本上,我是在添加项目,使我的web应用程序更像“桌面”。例如,现在我正在尝试获取一个页面,以便根据先前选择的项目将信息动态加载到DIV中。我目前正在使用cookie来处理保存数据的问题,但我无法用我的大脑来解决这个问题 我有一个具有以下关系的场景: 这个地方有许多建筑物 这座大楼有许多米长 仪表 所有实体都可以有关联的图表。因此,为了使其通用,我为每个图表建立了一个“has_many”关系,并像这样对其进行抽象 该网站有许多图表,如图表所示 建筑物有许多图

我有一个简单(但不知怎么复杂)的问题。基本上,我是在添加项目,使我的web应用程序更像“桌面”。例如,现在我正在尝试获取一个页面,以便根据先前选择的项目将信息动态加载到DIV中。我目前正在使用cookie来处理保存数据的问题,但我无法用我的大脑来解决这个问题

我有一个具有以下关系的场景:

这个地方有许多建筑物

这座大楼有许多米长

仪表

所有实体都可以有关联的图表。因此,为了使其通用,我为每个图表建立了一个“has_many”关系,并像这样对其进行抽象

该网站有许多图表,如图表所示

建筑物有许多图表,如图表所示

仪表有许多图表,如图表所示

一旦用户从左边的菜单中选择了一个项目,我就使用一种方法来确定哪些项目需要找到图表,并显示特定项目的图表。一切正常

我现在的问题是如何处理cookies,以便将数据保存到独立的键(或者封送对象),以便在页面重新加载时动态地重新加载以前选择的项的数据。ajax调用需要几个值,以便“更新”操作找到并显示正确的项。我不知道是直接使用Javascript,尝试触发一个动作,还是使用某种组合

正如我所说,我相信这个问题相当简单或直接,但我只是没有看到它。如果这个描述有点模糊,我很抱歉。请随时询问更多信息


最好的

这太大,无法存储在Cookie中,您应该:

  • 在客户端存储
    id
    cookie,并在服务器端存储数据,可以使用相应的
    id
    cookie和有效的身份验证凭据访问这些数据
  • 使用HTML5客户端存储,如
    localStorage
    或本地数据库

这太大,无法存储在Cookie中,您应该:

  • 在客户端存储
    id
    cookie,并在服务器端存储数据,可以使用相应的
    id
    cookie和有效的身份验证凭据访问这些数据
  • 使用HTML5客户端存储,如
    localStorage
    或本地数据库

当用户从菜单中选择一个项目时,将所有必要的信息保存到cookie中以重新选择该项目。将Javascript方法绑定到页面加载并检查该cookie的值。如果有指示应该预选某个项目的信息,只需调用用户从菜单中选择新项目时调用的相同Javascript方法即可。例如,如果您使用的是JQuery,您可以执行以下操作来绑定到页面加载:

$(document).ready(function() { /* check cookie and do stuff */ }

如果存在cookie,您可以做的另一件事是在RoR代码中预先呈现这些内容,这样您就不会在页面加载时立即执行AJAX调用(因为页面加载性能受到影响,这有时被认为是不好的形式)。

当用户从菜单中选择一项时,保存所有必要信息,以便将该项目重新选择到cookie中。将Javascript方法绑定到页面加载并检查该cookie的值。如果有指示应该预选某个项目的信息,只需调用用户从菜单中选择新项目时调用的相同Javascript方法即可。例如,如果您使用的是JQuery,您可以执行以下操作来绑定到页面加载:

$(document).ready(function() { /* check cookie and do stuff */ }
如果存在cookie,您可以做的另一件事是在RoR代码中预先呈现这些内容,这样您就不会在页面加载时立即执行AJAX调用(因为由于页面加载性能受到影响,这有时被认为是不好的形式)。

目前,“update\u div”操作是我控制器的一部分(我知道,不好)处理一切并更新div。我只是有一个“link_to”来调用它。也许我应该检查一下动作中的cookie?我把这个方法简化了一点。现在我发布到动作的唯一数据如下:chartable\u类型、chartable\u id、title。利用这些数据,它获取图表项并基于它呈现新的html。作为一个附带问题,我如何在页面加载时触发RoR操作?目前,作为我控制器一部分的“update_div”操作(我知道,坏)处理所有事情并更新div。我只是有一个“link_to”调用它。也许我应该检查一下动作中的cookie?我把这个方法简化了一点。现在我发布到动作的唯一数据如下:chartable\u类型、chartable\u id、title。利用这些数据,它获取图表项并基于它呈现新的html。作为一个附带的问题,如何在页面加载时触发RoR操作?