5.3. A Real-World Example
让我们一起来看一个应用RJS的实例吧!一个在线商店。用Rails实现其购物车。当一个购物项被加入到购物车,要让三个不同的页面元素根据变化进行更新。
5.3.1. The Old Way
在RJS之前,处理在购物车中增加或移除项目是用一大堆的Javascript代码和多次与服务端的交互的方式。这些javascript代码可能是下面这样:
}
这样是可以工作,但是存在一些比较严重的问题:这一大堆的代码使得其可读性和可维护性并不高;它必须多次与服务端进行交互,这会让应用变慢,错误发生率高,效率低下;而且页面元素的更新也不能达到同步的效果,因为响应慢,如果在这个过程半路中出现可能出现的错误情况,会让页面陷入混乱的境地。
5.3.2. The RJS Way
而用RJS来解决这个问题,会更简单也更有效率。不需要编写Javascript代码,通过一次传递来完成任务。下面来看看如何实施这个过程。“Add to Cart”链接使用标准的Ajax link helper:
点击链接后引发add_to_cart这个action,在action中会更新session的内容并且调用对应的RJS文件,add_to_cart.rjs:
RJS被翻译成为javascript代码并且返回给浏览器执行,以此来同步更新页面上的三个元素。代码中的3行做了原始方法中做的所有事情,但是响应更快,同时减少了错误的发生。
本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/91999,如需转载请自行联系原作者