为Rails应用程序设计有效的连续问题 - 答案功能

时间:2013-04-04 03:33:19

标签: ruby-on-rails ruby-on-rails-3 caching

我有一个Rails应用程序,我希望以特定的顺序向用户提供一系列问题。除非他回答了上一个问题,否则用户无法继续处理下一个问题。

以下是我需要帮助实现高效实施的一些设计问题:

  

要为用户提取问题列表,我需要付出昂贵的代价   db调用。对于新会话,如果获取列表,我只想要   用户以特定顺序查看问题   第一个问题。如果用户尝试了一些问题   一个过去的会议,他将跳到他最后离开的问题。怎么样   有效地实施它?我相信我需要在这里缓存。

在渲染视图时:

  

如何渲染此功能的视图?我可以有一个控制器   最初的问题模板。当用户尝试问题时,应该   我有问答选项文本更新与AJAX?我一定要吗   使用jquery用于此目的或任何Rails帮助程序可以在这里提供帮助吗?

任何设计帮助,rails功能 - 我可以使用的宝石都会受到欢迎。

1 个答案:

答案 0 :(得分:1)

我的回答并非特定于Ruby on Rails,但它应该仍然有用。

首先,我不会加载您可能不会提前使用的数据。如果您有10个问题,并且您一次只显示一个问题,那么我只需加载第一个问题,然后在用户完成第一个问题后,继续加载第二个问题。无需加载所有十个,因为用户可能永远不会问到问题10。

假设用户过早离开,您可以拨打AJAX电话,从中断的地方继续。

我同意你应该缓存这些问题。

这些步骤如下:

  1. 第一个问题 - 通过AJAX加载。通过AJAX呼叫保存答案和进度。
  2. 如果(1),则通过AJAX加载第二个问题。通过AJAX调用保存答案和进度。
  3. 重复直到问题完成。
  4. 通过这种方式,您可以使用用户/登录信息进行AJAX调用以从上次停止的位置进行调用。我想这会使你的数据库调用更便宜。