`
water84222
  • 浏览: 375147 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

RJS 模板的另种用法

阅读更多

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 Templates for Rails

    在Rails框架中,RJS模板通常与ActionController的`render :update`或`render :js`方法一起使用。这些方法会触发一个RJS模板的执行,生成的JavaScript代码会被发送到客户端并在浏览器中执行。通过这种方式,开发者...

    rjs 技术

    4. **响应处理**:在处理Ajax请求的控制器中,可以返回一个rjs模板,动态更新页面并反馈给用户。 在描述中提到的博文中,作者分享了一些关于如何使用rjs的实际示例和经验,这可能是对rjs技术的具体应用和实践的探讨...

    一些RJS资源和演示入门教程

    虽然具体内容无法在这里详述,但可以预期该博客会涵盖RJS的基本概念、如何在Rails项目中集成RJS、编写RJS模板以及解决常见问题等。 标签“源码”和“工具”表明这个压缩包可能包含了示例代码和相关工具,帮助读者...

    rjs-install-tailwindcss:用StackBlitz创建:high_voltage:

    通过这个项目,开发者不仅可以学习如何在StackBlitz上使用JavaScript进行开发,还能掌握Tailwind CSS的用法,理解utility-first CSS设计模式,这对于提升前端开发技能和提升工作效率都是大有裨益的。同时,使用在线...

    Kurose-计算机网络:自顶向下方法(原书第7版)配套ppt及补充资料

    7. **RJS资料**(59971,0134312805_rjs-258987.zip):"RJS"可能是作者或教师的缩写,这部分可能包含额外的阅读材料、案例分析或其他补充教学资源,丰富了学习体验。 总的来说,这些资料全面覆盖了计算机网络的基础...

    使用gulp解决requireJs项目前端缓存问题

    1. **文件指纹(Fingerprinting)**:一种常用的防止浏览器缓存的方法是为每个输出文件添加一个唯一的哈希值,通常是在文件名后面追加。当文件内容改变时,哈希值也会随之变化,这样浏览器就会认为这是一个新的文件...

    完成了AJAX树附原理分析

    经过项目中真正通过RJS实现AJAX树,可知,通过使用insert_html、replace_html等辅助方法,可直接操作页面上的元素,无须使用局部模板。 整个的实现过程还是有点曲折: 之前使用的生成树结构的页面,是利用从服务器...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    24.3 RJS模板 451 24.4 结论 456 第25章 ActionMailer 457 25.1 发送邮件 457 25.2 接收邮件 465 25.3 电子邮件的测试 467 第26章 Active Resource 469 26.1 Active Resource的替代品 469 26.2 给我看代码! 471 ...

    requirejs中文文档

    这篇文档将深入讲解RequireJS的核心概念、用法以及相关的插件。 **RequireJS核心概念** 1. **模块化**:RequireJS 提供了一种组织代码的方式,将功能分散到不同的模块中,每个模块都有自己的作用域,避免了全局...

Global site tag (gtag.js) - Google Analytics