Rails 自从 1.1版开始引入了 rjs 模板,目的是为了解决渲染一个模板执行多个 JavaScript 代码块的问题。rjs 模板基于 prototype 的 ajax 类,渲染一个 rjs 模板的同时,会将 response 的 content-type 设置为 text/javascript,如果该 request 是有 Ajax.Request 或者 Ajax.Updater 发出的,并且 evalScripts 设置为 true,那么如果返回的报文头将会使返回的 JavaScript 自动被执行。
利用这个特性,可以做到一个调用更新多个 html 元素的目的(Update Multiple Elements by One Request)。比如以下 rjs 模板:
page.update_html 'container', :partial => 'partial_page'
page.visual_effect :highlight, 'container'
page.alert 'Updated Successfully'
将会更新 container 元素的内容,然后有一个 highlight 的效果,最后弹出一个 Updated Successfully 的对话框。
再联系到 inu.cc 的现有框架,过渡依赖于局部渲染。全局传参的架构确实很保险,但是过于臃肿,现在回想起来甚至有点违背了 rails 本身倡导的 agile 的思想。既然有现成的、符合使用惯例的实现方式,为何要自己另外建立一套框架?这点确实是设计初期没有考虑到的。结果导致了当前架构的不易维护。
吃一堑长一智,在此记录下以前忽略的几种模式:惯例优先、默然渲染、rjs、rxml,以及提供各种常用服务的开发包。希望这些记录能够使 inu.cc 的下一个版本更加快速、敏捷、易维护,同时能带来更好的用户体验。
RJS API:
RJS Api on http://api.rubyonrails.org
分享到:
相关推荐
3. **变量引用**:Rails的实例变量可以在RJS模板中直接使用,使得数据传递更加方便。例如,`@users.each do |user|`可以用来遍历后端传来的用户数据,并更新到页面上。 4. **条件和循环**:Ruby的条件语句(如`if`...
4. **响应处理**:在处理Ajax请求的控制器中,可以返回一个rjs模板,动态更新页面并反馈给用户。 在描述中提到的博文中,作者分享了一些关于如何使用rjs的实际示例和经验,这可能是对rjs技术的具体应用和实践的探讨...
虽然具体内容无法在这里详述,但可以预期该博客会涵盖RJS的基本概念、如何在Rails项目中集成RJS、编写RJS模板以及解决常见问题等。 标签“源码”和“工具”表明这个压缩包可能包含了示例代码和相关工具,帮助读者...
8. **实战案例**:通过实例演示如何在实际项目中运用RJS模板,解决特定问题。 9. **调试与优化**:学习如何有效地调试RJS代码,以及优化性能,避免性能瓶颈。 10. **社区资源**:可能还会提及Rails社区的资源,如...
24.3 RJS模板 451 24.4 结论 456 第25章 ActionMailer 457 25.1 发送邮件 457 25.2 接收邮件 465 25.3 电子邮件的测试 467 第26章 Active Resource 469 26.1 Active Resource的替代品 469 26.2 给我看代码! 471 ...
首先要纠正一个上篇博文《Rails中的Ajax初体验》中的一个错误:上篇博文中,我说“要在Rails中使用Ajax,局部模板是必须的”,经实践检验,是错误的,特此更正。实践是检验真理的唯一标准,此言不虚。经过项目中真正...
Rails框架的流行部分归功于它对Ajax的友好支持,通过RJS模板简化了Ajax开发,以及对RESTful架构的深度集成。REST作为一种设计原则,确实成为了Web开发的趋势,但Java凭借其灵活性和不断进化的框架,如Spring Boot和...