繁体   English   中英

在Rails中保存和更新基于AJAX的图形的状态

[英]Saving and updating the state of an AJAX based graph in Rails

我在Rails项目中有一个Google Chart的ColumnChart。 这是通过调用呈现JSON的Rails控制器操作在JavaScript中生成和填充的。

该图表为客户显示了一个月的信息价值。

在图表上方,我有下一个和上一个箭头,这些箭头使客户可以更改图表上显示的月份。 这些没有任何功能。

我的问题是,就当前查看图表的客户而言,保存图表状态的最佳方法是什么?

这是我一直在考虑的工作流程:

  1. 选择了箭头之一。
  2. 此事件在JavaScript中捕获。
  3. 基于箭头按钮的data属性(+或-),向Rails操作呈现JSON的另一个请求是通过传递的附加GET参数执行的。
  4. 该图表将使用新的JSON响应重新呈现。

是否可以在服务器端执行围绕图形的当前日期递增或递减的逻辑? 图表的日期是否存储在会话数组中,默认为首次加载时的当前日期?

另一方面,将图表状态保存在JavaScript代码或Cookie中的客户端上,然后在将日期发送到Rails控制器之前对其进行操作,是否有意义?

我已经使用Rails开发了大约6个月,并且对此感到满意,但是直到最近才开始使用AJAX使用JavaScript进行开发。 目前,我将JS代码与Rails绑定在一起的经验在某些方面是有限的,因此需要一些有关如何实现此目标的建议/最佳实践。

任何建议深表感谢。

我将通过几个选择,一些好,一些坏。

首先,您绝对不希望做的事情是保留您在cookie或任何其他形式的持久服务器端存储中处于哪个月份的概念。 当然,有时服务器状态是必要的,但当它们是简单的替代方法时,不应使用它。 REST的一部分(Rails主要围绕它构建)试图用纯属性表示数据,而不是像这样散布其状态。

从这里开始,大多数解决方案可能都是可以接受的,而意见起着更大的作用。 您可以做的一件事是使用当前月份从+/-符号计算一个月份,然后将其发送到服务器,服务器将返回所请求月份的信息。

不过,我并不是一个忠实的拥护者,因为您必须编写能够创建有效日期范围的javascript,并且大多数此功能可能已经在服务器上了。 只需将+/-和当前月份传递给服务器也可以,您只需要做一些额外的路由和逻辑即可将服务器上的符号解析为不同的月份。

尽管这两种方法都可以使用,但是我偏爱的解决方案将使对月份的初始请求生成相邻月份的有效表示,并将其返回给客户端。 然后,当使用请求的数据更新图形时,还用服务器提供的链接替换了图形上的前向/后向链接。 这很好地融合了前两种解决方案的优点-服务器上没有其他路由,也没有对客户端代码进行实质性添加。 此外,您还具有额外的好处,即可以将过渡过渡到没有从客户那里收集到任何数据的几个月(即在成为客户和未来之前)。 否则,您将不得不创建单独的逻辑来处理客户对不存在的信息的请求,这对您来说是额外的工作,而对于客户而言则更加混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM