我在Rails项目中有一个Google Chart的ColumnChart。这是通过调用呈现JSON的Rails控制器操作在JavaScript中生成和填充的。
该图表显示了一个月的客户信息。
在图表上方,我有下一个和上一个箭头,允许客户更改图表上显示的月份。它们没有任何功能。
我的问题是,根据客户查看图表的当前月份,保存图表状态的最佳方法是什么。
以下是我在考虑如何进行工作流程:
在服务器端执行递增或递减图形当前日期的逻辑吗?图表的日期存储在会话数组中,默认为首次加载时的当前日期?
另一方面,将图表状态保存在JavaScript代码或cookie中的客户端是否有意义,然后在将日期发送到Rails控制器之前对其进行操作?
我一直在使用Rails开发大约6个月并对此感到满意,但最近才开始使用AJAX开发。我将JS代码与Rails结合在一起的经验是目前有限的一些,所以寻找一些关于如何处理这个问题的建议/最佳实践。
非常感谢任何建议。
答案 0 :(得分:1)
我要经历几个选项,一些好,一些不好。
首先,您绝对不想做的是保持您在cookie中的月份或任何其他形式的持久服务器端存储的概念。当然有时候服务器状态是必要的,但是当它们是简单的替代品时不应该使用它。 REST的一部分(Rails主要是围绕它构建)试图用纯属性表示数据,而不是让它的状态像那样传播。
从这里开始,大多数解决方案都可以接受,而意见发挥的作用更大。您可以做的一件事是使用当前月份从+/-符号计算一个月并将其发送到服务器,服务器将返回所请求月份的信息。
我不是很喜欢这个,因为你必须编写能够创建有效日期范围的javascript,并且大部分功能可能已经在服务器上了。只需将+/-和当前月份传递给服务器也可以正常工作,您只需要执行一些额外的路由和逻辑即可将服务器上的符号解析为其他月份。
虽然其中任何一个都可行,但我首选的解决方案是让月份的初始请求生成相邻月份的有效表示,并将其返回给客户端。然后,当您使用请求的数据更新图形时,还可以使用服务器提供的链接替换图形上的前向/后向链接。这提供了前两种解决方案的好处的良好融合 - 在服务器上没有额外的路由,并且没有对客户端代码的实质性添加。此外,您还有一个额外的好处,就是能够将转换变为灰色,而没有从客户端收集数据(即在客户和未来之前)。如果没有这个,您必须创建单独的逻辑来处理客户端对不存在的信息的请求,这对您来说是额外的工作,对客户来说更加混乱。