1

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

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

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

我的问题是,对于查看图表的客户来说,就当前月份而言,保存图表状态的最佳方法是什么。

以下是我正在考虑的工作流程:

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

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

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

我已经使用 Rails 开发了大约 6 个月并且对它感到满意,但最近才开始使用 AJAX 使用 JavaScript 进行开发。在这一点上,我将 JS 代码与 Rails 结合在一起的经验是有限的,所以寻找一些关于如何处理这个问题的建议/最佳实践。

非常感谢任何建议。

4

1 回答 1

1

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

首先,您绝对不想做的是在 cookie 或任何其他形式的持久服务器端存储中维护您所在月份的任何概念。当然,有时服务器状态是必要的,但当它们是简单的替代品时不应该使用它。REST 的一部分(Rails 主要围绕它构建)试图以纯属性表示数据,而不是让它的状态像那样分散。

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

不过,我不是这个的超级粉丝,因为您必须编写能够创建有效日期范围的 javascript,并且大部分功能可能已经在服务器上。只需将 +/- 和当前月份传递给服务器也可以,您只需执行一些额外的路由和逻辑即可将服务器上的符号解析为不同的月份。

虽然其中任何一个都可以,但我首选的解决方案是让月份的初始请求生成相邻月份的有效表示,并将其返回给客户端。然后,当您使用请求的数据更新图表时,您还将图表上的前向/后向链接替换为服务器提供的链接。这很好地融合了前两种解决方案的优点——在服务器上没有额外的路由,也没有对客户端代码进行实质性的添加。此外,您还有一个额外的好处,那就是能够将过渡到没有从客户那里收集数据的月份(即在他们成为客户之前和未来)。如果没有这个,您必须创建单独的逻辑来处理客户端对不存在的信息的请求,

于 2012-12-03T20:18:35.237 回答