19.2 Rails对Ajax的支持
Rails使用Prototype库来支持Ajax应用。同时Rails提供了一系列辅助类,帮助开发人员快速完成Ajax应用开发,下面介绍Rails提供的这些辅助类。
19.2.1 模块ActionView::Helpers::AssetTagHelper
该模块的代码位置为:vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb。它提供了一系列方法,可以方便地在HTML页面中链接其他资源,如JavaScript脚本、stylesheets定义文件等。该模块提供了如下方法。
javascript_include_tag(*sources)
该方法可以在视图文件中包含JavaScript脚本文件。参数是一个或多个脚本名称。
使用例子如下。
javascript_include_tag "prototype" # 输出如下
<script type="text/javascript" src="/javascripts/xmlhr.js"></script>
javascript_include_tag "prototype", "/other/googlemap" # 输出如下
<script type="text/javascript" src="/javascripts/prototype"></script>
<script type="text/javascript" src="/other/googlemap.js"></script>
19.2.2 模块 ActionView::Helpers::PrototypeHelper
该模块的代码位置为:vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb。它提供了一系列辅助类,来调用Prototype的JavaScript方法,包括用于Ajax远程调用的方法。该模块有如下方法。
1.link_to_remote(name, options = {}, html_options = {})
构建一个通过XMLHttpRequest调用远程方法的链接,远程方法路径由options[:url]指定。返回结果被插入到由options[:update]指定的DOM对象中。典型的例子如下。
link_to_remote "Delete this project", :update => "project",
:url => { :action => "destroy", :id => project.id }
#创建了一个link,显示是Delete this project,点击link后异步远程调用project的destroy动作,并把返回结果更新到project这个DOM对象中。
该方法的options参数如下。
表19.1 options参数列表
|
参 数 名 |
参 数 类 型 |
说 明 |
|
url |
哈希 |
指定远程方法路径。由action指定远程方法 |
|
update |
字符串或哈希 |
指定Ajax调用结果输出的DOM对象ID。可以通过哈希定义多个DOM对象,针对不同的执行结果 |
|
position |
字符串 |
指定DOM对象的更新方式。总共有下面4种方式:before、top、bottom和after |
2.form_remote_tag(options = {})
构建一个HTML Form标记,该标记通过XMLHttpRequest方式调用远程方法。这个方法同link_to_remote很相似,只是这个方法可以提交用户的输入给远程方法。该方法的典型使用方法如下。
form_remote_tag :html => {:update=>”my area”, :action =>
url_for(:controller => "area", :action => "add") }
19.2.3 模块 ActionView::Helpers::JavaScriptHelper
该模块的代码位置为:vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb。提供了一系列在视图中使用JavaScript的辅助类。







