RoR 中提供了一些方法来简化 Ajax 的使用。
1. Javascript_include_tag
这是一个引入 javascript 文件的方法 , 如果使用 <%=javascript_include_tag(:defaults)%> 那么将引入 controls.js,dragdrop.js,effects.js,prototype.js 这四个 js 文件。使用 <%=javascript_include_tag(“common”)%> 将引入在 public/javascripts/ 下的 common.js 文件。
2. link_to_remote
这是一个很方便使用的方法,它可以返回一段 html 代码段然后更新一个区域。例子:
<%= link_to_remote ( " 编辑 " , :update => "type" , :url =>{
:controller => "types" , :action => "edit" , :id =>type.id}%>
<div id=”type”>
</div>
:update 对应的值就是要更新的区域, : controller 对应的是控制类, :action 对应的是执行控制类中的那个方法。 :id 是要传入的参数。
也可以用回掉方法来接受返回回来的 html 代码或者是 xml. 例子:
<%= link_to_remote ( " 编辑 " , :url =>{ :action => "edit" , :id =>submodule.id},
:complete => "showEditModuleDialog(request)" )%>
function showEditModuleDialog (request){
alert(request.responseText);
alert(request.responseXML);
}
3. form_remote_tag
这个方法可以使你提交一个 form 而不用提交整个页面。例子:
<%=form_remote_tag( :update => "bugsetting" , :url =>{ :controller => "systems" ,
:action => "create" })%>
<table>
<tr>
<td> 操作系统名称 : </td>
<td> <%= text_field 'system', 'name' %></td>
</tr>
<tr>
<td> 错误等级说明 : </td>
<td> <%= text_field 'system', 'description' %></td>
</tr>
<tr>
<td colspan ="2">
<input type ="submit" value=" 保存 " />
</td>
</tr>
</table>
<%= end_form_tag %>
这边参数的使用和 link_to_remote 的使用是一样的。