RJS 模板会膨胀的,但在你应用程序的其它部分使用这些方法却很好。是否可以在你的 ptototype 回调或静态 javascipt 文件内使用奇妙的 javascript 辅助方法呢?

下面是个例子:

<%= link_to_function('reorder', update_page do |page|

page.send :record, sortable_element('items',

:url => viewbox_url(:action => 'reorder',

:id => @view.id)).match(/Sortable.create[^n]+/)

page.hide 'contents_controls'

page.show 'contents_reorderable'

end) %>

如果你深入探究 RJS 模板是如何工作的,它基本上执行的代码在一个 update_page 块内。在 #link_to_function 内我所要做的是在 link 的 onclick 事件内输出结果。然而,若你希望 HTML 整洁些的话。我们可以把它放在一个 javascript 库内。

创建控制器:

我们希望 URL 看起来与任何旧的 javascript 如 ‘javascripts/foo.js’ 类似。

# generate the controller first

# ./script/generate controller javascripts

# create a route

map.connect 'javascripts/:js', :controller => 'javascripts', :action => 'show',

:requirements => { :js => /.js$/ }

# the controller action

def show

headers["Content-Type"] = 'text/javascript'

render :action => params[:js][0..-4]

end

# the rhtml view

function reorder() {

<%= sortable_element('items', :url =>

viewbox_url(:action => 'reorder', :id => @view.id)).match(/Sortable.create[^n]+/) %>

<% update_page do |page|

page.hide 'contents_controls'

page.show 'contents_reorderable'

end -%>

}

还有什么?

你可以打开页面缓存以便不用每次都渲染 javascript 视图。这就是为什么用 .js 扩展名定义路由是必须的。如果对你当前静态内容缓存 js 文件有问题的话,可以给你的 javascript 控制器一个不同的路径。

现在你有了这个 javascript 控制器,你可以使用它来加强其它的 javascript 函数,如 AJAX 调用。特别是如果你喜欢使用 Behavior 库来添加回调,这会让你感到相当方便。

http://habtm.com/articles/2005/12/15/another-use-for-rjs-templates

http://my4java.itpub.net/post/9983/215442

RJS 模板的另种用法相关推荐

  1. layui 表格内容写temple函数_layui表格-template模板的三种用法

    问题情境: layui中将数据库数据通过layui table渲染到前端表格,非常简单,但是如果数据库存储的信息不能被直接展示,项目中该页面有好几个这样的字段,会员类型,支付类型,会员时长还有平台类型 ...

  2. layui导入模板数据_layui表格-template模板的三种用法

    问题情境: layui中将数据库数据通过layui table渲染到前端表格,非常简单,但是如果数据库存储的信息不能被直接展示,项目中该页面有好几个这样的字段,会员类型,支付类型,会员时长还有平台类型 ...

  3. Java Arrays.sort()的几种用法

    Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用. 但是sort()的参数有好几种,下面我就为大家一一介绍,这几种形式的用法. = ...

  4. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast...

    C++中的operator主要有两个作用,一是操作符的重载,一是自定义对象类型的隐式转换.对于操作符的重载,许多人都不陌生,但是估计不少人都不太熟悉operator的第二种用法,即自定义对象类型的隐式 ...

  5. Rails 中的 RJS 模板

    Rails 自从 1.1版开始引入了 rjs 模板,目的是为了解决渲染一个模板执行多个 JavaScript 代码块的问题.rjs 模板基于 prototype 的 ajax 类,渲染一个 rjs 模 ...

  6. 入门微信小程序开发(三)数据绑定的几种用法

    一.数据绑定 与书写HTML页面一样,小程序页面也只能通过多写多练提升.在构建完页面后就出现了一个问题,我们该如何获取组件元素让数据与之关联呢? 在网页开发中,我们同样使用JS操作DOM,包括数据渲染 ...

  7. Chatgpt提升工作效率的7种用法

    Chatgpt在人工智能领域越来越受到重视.以前我们只能通过专业的工具来完成各种任务,但现在我们可以通过Chatgpt来解决一些日常任务,提高工作效率.下面是Chatgpt如何提升工作效率的7种用法. ...

  8. vue3.0中setup使用(两种用法)

    这篇文章主要介绍了vue3.0中setup使用,本文通过两种用法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 一.setup函数的特性以及作用 可以确定的是 V ...

  9. 模板编程中typename用法

    模板编程中typename用法 文章目录 模板编程中typename用法 typename的常规用法 typename的第二个用法:修饰类型 typename使用规则 typename的常规用法 ty ...

最新文章

  1. android 对比win10 耗电,win10系统下像何查看耗电的应用程序
  2. 034_jQuery Ajax的getJSON和getScript方法
  3. Hystrix默认超时时间
  4. cefSharp通过js操控页面,含跨域操控
  5. s5-13 RIP 为什么会 衰败
  6. 标准库类型string的基本功能和使用
  7. IDEA如何生成get和set方法
  8. c语言编写程序求8,使用c语言编写程式,实现计算1*2*3+4*5*6+7*8*9+……+28*29*30的值...
  9. Spring官方RSocket Broker 0.3.0发布: 快速构建你的RSocket架构
  10. numpy 中shape的用法
  11. android imei *#06#,[Android]Hot key IMEI *#06# and *#07#
  12. php调用pdf虚拟打印机,电脑中怎么安装pdf虚拟打印机
  13. 测井曲线fft matlab,Matlab编程实现FFT实践及频谱分析
  14. Cloudera:开放式数据湖仓,释放数据分析潜力
  15. python画蛋糕_用python代码绘制漂亮生日蛋糕
  16. 【天光学术】西方哲学论文:中西方哲学中的虚无主义成分对比
  17. Java亿级流量架构之网关设计思路
  18. 基于PHP和MySql的学生成绩管理系统(附完整版代码)
  19. 55个美丽而独特的网站页眉设计欣赏
  20. 流行病学名词解释和简答题集锦

热门文章

  1. STL源码分析之RB-tree关联容器 上
  2. SPARK-SQL - group分组聚合api,agg()
  3. html5微信视频无法播放视频教程,解决微信h5页面视频播放问题实例
  4. 计算机考试贷款日到期日,怎么样用金融计算器算利率和期限
  5. 【owt-server】m88分支和m59-server
  6. 2022世界人工智能大会全记录
  7. 在oracle 中编写一个程序,用VC 开 发 基 于ORACLE 数 据 库 应 用 程 序 的 两 种 方 法...
  8. 快过年了,Python实现12306查票以及自动购票....
  9. java file delete 不及时_java中File的delete()方法刪除文件失敗的原因
  10. win7/win10下KiWi Syslog服务器的安装与配置