rails 1.1以上版本提供了强大优雅的RJS,可能执行一个请求多个更新。
有些时候我们并不需要请求服务器,只想在浏览器上执行某些脚本更新,但又想使用RJS。所以为RoR增加了这项功能。
使用方法:
上面演示了form_local_tag和link_to_local的使用,打开这个页面以后,可以关掉服务器测试,会发现它不请求服务器也能执行相应脚本。
define_action定义一个脚本函数,call_script用来实现javascript和RJS代码的混合。当使用form_local_tag时,action方法的参数已经被处理过,所以可以直接在action中使用params.comment.title。
当然现在还不完善,比如还只能使用转换完的页面模板,一些动态页面将看不出效果。要做到这点,需要用javascript实现一整套的ActionView辅助方法。
下面提供一个针对rails 1.1.2的一个补丁文件:
补丁文件下载
有些时候我们并不需要请求服务器,只想在浏览器上执行某些脚本更新,但又想使用RJS。所以为RoR增加了这项功能。
使用方法:
<
script language
=
"
javascript
"
>
<%=
render :update do | page |
page.define_action ' test_action ' do
page.call_script <<- EOS
alert(params.comment.title);
alert(params.comment.body);
EOS
page.replace_html ' errors ' , ' ERROR '
end
page.define_action ' link_action ' do
page.replace_html ' errors ' , ' ERROR '
end
end
%>
</ script >
< div id = " errors " ></ div >
<%= form_local_tag :html => {:action => ' test_action ' } %>
< input name = " comment[title] " />< br />
< input name = " comment[body] " />< br />
<%= submit_tag ' Create ' %>
<%= end_form_tag %>
<%= link_to_local ' Test ' , :action => ' link_action() ' %>
<%=
render :update do | page |
page.define_action ' test_action ' do
page.call_script <<- EOS
alert(params.comment.title);
alert(params.comment.body);
EOS
page.replace_html ' errors ' , ' ERROR '
end
page.define_action ' link_action ' do
page.replace_html ' errors ' , ' ERROR '
end
end
%>
</ script >
< div id = " errors " ></ div >
<%= form_local_tag :html => {:action => ' test_action ' } %>
< input name = " comment[title] " />< br />
< input name = " comment[body] " />< br />
<%= submit_tag ' Create ' %>
<%= end_form_tag %>
<%= link_to_local ' Test ' , :action => ' link_action() ' %>
上面演示了form_local_tag和link_to_local的使用,打开这个页面以后,可以关掉服务器测试,会发现它不请求服务器也能执行相应脚本。
define_action定义一个脚本函数,call_script用来实现javascript和RJS代码的混合。当使用form_local_tag时,action方法的参数已经被处理过,所以可以直接在action中使用params.comment.title。
当然现在还不完善,比如还只能使用转换完的页面模板,一些动态页面将看不出效果。要做到这点,需要用javascript实现一整套的ActionView辅助方法。
下面提供一个针对rails 1.1.2的一个补丁文件:
补丁文件下载
本文介绍 Rails 1.1以上版本中 RJS 的客户端执行功能,演示如何使用 form_local_tag 和 link_to_local 在不请求服务器的情况下执行 JavaScript 更新。

1053

被折叠的 条评论
为什么被折叠?



