`
hozaka
  • 浏览: 39276 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Rails 中的 RJS 模板

阅读更多
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
分享到:
评论

相关推荐

    RJS Templates for Rails

    3. **变量引用**:Rails的实例变量可以在RJS模板中直接使用,使得数据传递更加方便。例如,`@users.each do |user|`可以用来遍历后端传来的用户数据,并更新到页面上。 4. **条件和循环**:Ruby的条件语句(如`if`...

    rjs 技术

    4. **响应处理**:在处理Ajax请求的控制器中,可以返回一个rjs模板,动态更新页面并反馈给用户。 在描述中提到的博文中,作者分享了一些关于如何使用rjs的实际示例和经验,这可能是对rjs技术的具体应用和实践的探讨...

    一些RJS资源和演示入门教程

    虽然具体内容无法在这里详述,但可以预期该博客会涵盖RJS的基本概念、如何在Rails项目中集成RJS、编写RJS模板以及解决常见问题等。 标签“源码”和“工具”表明这个压缩包可能包含了示例代码和相关工具,帮助读者...

    Rails相关电子书汇总二

    8. **实战案例**:通过实例演示如何在实际项目中运用RJS模板,解决特定问题。 9. **调试与优化**:学习如何有效地调试RJS代码,以及优化性能,避免性能瓶颈。 10. **社区资源**:可能还会提及Rails社区的资源,如...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    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 ...

    完成了AJAX树附原理分析

    首先要纠正一个上篇博文《Rails中的Ajax初体验》中的一个错误:上篇博文中,我说“要在Rails中使用Ajax,局部模板是必须的”,经实践检验,是错误的,特此更正。实践是检验真理的唯一标准,此言不虚。经过项目中真正...

    Java在WEB开发领域的革新

    Rails框架的流行部分归功于它对Ajax的友好支持,通过RJS模板简化了Ajax开发,以及对RESTful架构的深度集成。REST作为一种设计原则,确实成为了Web开发的趋势,但Java凭借其灵活性和不断进化的框架,如Spring Boot和...

Global site tag (gtag.js) - Google Analytics