`

Rails Recipe实践(one by one) -- Update Multiple Elements...

阅读更多
在编写ajax应用的时候,有时需要在一次click中同时更新页面上的多个元素,这该怎么做呢?rails提供了一个新鲜玩意儿,可以帮助我们 ’成批’ 的更新页面元素。
这一章碰到的这个新玩意儿,叫做Romote Javascript(RJS),可以在其中写入ruby代码,它则会自动转化为javascript语法,极大的方便了我这种三脚猫水平的web开发人员。rjs会在需要的时候自动生成javascript代码,然后将content-type设置成text/javascript,在view端,集成在rails中的prototype(前提是你在view中引用了javascript_include_tag :default 或者javascript_include_tag :prototype)会识别并且将从服务器端返回的内容当作javascript代码自动执行。当然,既然你想要图方便,自然需要遵守rjs文件得规矩。一个rjs文件得内容看上去类似下面得内容:
ruby 代码
 
  1. page.replace_html 'time_updated' , Time.now.to_s  
  2. page.visual_effect :shake, 'time_updated'  
  3. page.insert_html :top, 'the_list' , '
  4. King of the Hill
  5. '  
怎么样,是不是一目了然?让我用javascript写同样功能的代码出来,估计,我要晕半天了。
具体的实现起来相当简单,假设,我的某个页面上有个ajax链接,单击它,就会更新页面上的多个不同部分。
ruby 代码
 
  1. <%= link_to_remote 'rjs demo',:url=>{:action=>:rjs_show} %>  
这个名为rjs_show的action内容假设为空,因为在这里我们不需要action处理事务,所有的ajax操作,我们都放将放到rjs文件中去:
ruby 代码
 
  1. def rjs_show  
  2. end  
注意,action和rjs文件必须是同名的,既,这里的rjs文件应该名为rjs_show.rjs,和同一个controller下的视图文件放在一起。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics