本题讲述Rails处理Ajax返回中的javascript的几种方法:
1. html.erb中的javascript代码。
Javascript代码嵌于<script>的tag中。javascript代码会在客户端被执行(执行之后并不保留源码,对于下述几种方法也一样)。
2. js.erb中的javascript代码
Javascript代码直接写于js.erb文件中,不需要<script> tag。Render这个文件,文件中的javascript代码会在客户端被执行。注意,这里的请求必须是ajax调用,即request.xhr?应该为true。否则程序会报错,提示找不到相应的erb文件。因为如果为非ajax调用,程序默认会去找html.erb文件,而非js.erb文件。
3. RJS
RJS的本质是使javascript的编写更加简单方便,用ruby代码直接代替javascript代码的编写。这就好比form_tag这些helper方法用于简化html代码的编写一样。
比如下面这段代码:
render :update do |page|
page.insert_html :bottom, 'strip', :partial => 'strip'
page.visual_effect :highlight, 'strip'
page.replace_html 'flash_message', :partial => 'flash_message'
end
这段代码做了三件事情:a. 在id为strip的html下面插入由strip这个partial render出来的html代码。b. 高亮显示以strip为id的html。c. 用由flash_message这个partial渲染出来的html替换页面中flash_message为id的html。
本质上,上面这段代码只是生成了一段javascript代码。经过观察,如果你采用了jquery,那么这段javascript代码被包含在一个try {} catch {}的结构中。它会在客户端被eval。
如果没有rjs这样的支持,直接用javascript编写这段代码的难度不言自明。当需要一个调用触发多个客户端更新时,就应该考虑使用rjs。
注意,如果你是用link_to_remote发起这个调用,那么请去掉它的参数:update。否则这段javascript代码不会被执行,而是被当做html代码被更新在:update所指定的位置。
最后:
记住一句话,Ajax take away the control of HTTP from the browser。
分享到:
相关推荐
综上所述,《Beginning Google Maps Applications with Rails and Ajax》这本书为初学者提供了一条清晰的学习路径,从基础概念到实践案例,全面覆盖了如何使用Google Maps API、Rails以及Ajax技术创建高质量的地图...
在Rails开发中,为了增强用户体验,常常需要使用JavaScript来处理日期选择和管理。这篇博客“rails中使用javascript日期控件”探讨的就是如何在Rails应用中集成JavaScript日期控件,特别是通过一个名为WebCalendar....
**Ajax(异步JavaScript和XML)与CGI(通用网关接口)是两种在Web开发中常见的技术。** Ajax是一种创建动态网页的技术,允许在不重新加载整个网页的情况下,与服务器交换数据并更新部分网页内容。它通过JavaScript...
在Ruby on Rails框架中,AJAX(异步JavaScript和XML)的使用极大地提升了用户体验,因为它允许在不刷新整个页面的情况下更新内容。Rails通过内置的Prototype.js库简化了AJAX的集成,使得开发者可以快速创建富互联网...
《初识Google Maps应用:基于Rails和Ajax》是一本由Apress出版的技术书籍,专注于讲解如何使用Ruby on Rails框架和Ajax技术构建与Google Maps集成的应用程序。这本书详细介绍了如何利用Google Maps API,结合Web开发...
常见的 JavaScript 库如 jQuery 可以用来处理 DOM 操作、事件监听和 AJAX 请求。 **Rails 开发流程** 1. **创建项目**: 使用 `rails new` 命令初始化一个新的 Rails 项目,如 `rails new RailsTutorial_DemoApp`。...
可以通过命令行工具执行 `ruby -v` 和 `rails -v` 来验证安装情况。 - **创建第一个 Rails 应用**:使用命令 `rails new myapp` 可以快速创建一个新的 Rails 应用程序,其中 `myapp` 是应用的名称。 - **启动服务器*...
10. **Ajax和JavaScript**:探讨如何集成Ajax技术以实现页面无刷新更新,提升用户体验,以及如何使用Rails与JavaScript库(如jQuery)协同工作。 11. **部署**:最后,读者将学习如何将应用程序部署到服务器,如...
11. **AJAX与Unobtrusive JavaScript**:Rails鼓励使用UJS(Unobtrusive JavaScript)实现异步交互,通过data-*属性和事件监听,将JavaScript和HTML解耦合。 12. **Asset Pipeline**:Rails的资产管道负责处理CSS、...
开发这个应用时,首先会在Rails中设置路由、创建必要的控制器和模型,然后定义RESTful API接口以供前端调用。接着,在前端,使用AngularJS搭建应用结构,创建控制器、服务和指令,实现数据的获取和显示,以及用户...
11. **AJAX和JavaScript**:了解如何在Rails中集成异步请求,以及使用CoffeeScript或jQuery增强用户体验。 通过这些源代码,读者可以对照书中内容,逐步实现各个功能模块,遇到问题时可以直接查看代码实例,进行...
6. **库集成**:RJS模板与Prototype库紧密集成,可以轻松调用Prototype库提供的函数,如Ajax请求和DOM操作。同时,Rails还支持其他JavaScript库如jQuery,只需适当配置即可。 压缩包中的文件列表: - **OReilly....
- **AJAX集成**:利用JavaScript和Ajax技术来增强用户体验,使得RESTful API可以与现代前端技术无缝结合。 - **RESTful应用测试**:提供工具和支持以确保RESTful应用的稳定性和可靠性。 - **ActiveResource**:这是...
2. **基础架构**:了解Rails的MVC架构,包括模型(Model)负责数据处理,视图(View)用于展示用户界面,控制器(Controller)作为模型和视图之间的桥梁,处理用户请求并调用相应模型方法。 3. **路由**:Rails的...
"flappy-bernie:阶段4 Javascript和Rails API项目"是一个结合了JavaScript和Rails API技术的编程项目,旨在帮助开发者提升在前端和后端交互的能力。在这个项目中,你将有机会学习并应用JavaScript的核心概念,以及...
本书的作者 Alex MacCaw 是一位知名的 Ruby/JavaScript 程序员,他不仅在开源社区中享有盛誉,还是 Spine 框架的创造者,并且经常参与纽约、旧金山和柏林等地的 Ruby/Rails 论坛。 #### 二、MVC 架构详解 ##### ...
### RJS Cheatsheet知识点详解 ...通过以上示例可以看出,RJS提供了一系列方便的方法来操作DOM和执行客户端JavaScript,使得开发者能够在服务器端编写更简洁、高效的代码来控制前端的行为,提高了开发效率。
本书的重点在于如何将Rails的应用提升到一个新的水平,即从一个简单的可用状态转变为能够处理真实世界的复杂问题。书中深入探讨了诸如用户管理、安全性、时区处理、国际化、团队协作、自动化构建任务、部署生产环境...
- **Ajax (Asynchronous JavaScript and XML)**:一种创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,使得网页能够异步更新。 - **ASP.NET**:由微软开发的一个服务器端Web应用程序框架,用于生成...