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 的使用是一样的。