| RJS模板是个新形式模板,称为 JavascriptGenerator 模板且带有 .rjs 文件扩展名。
但这个新的模板类型用来做什么的呢?下面是 Rdoc 内的段描述:
“不同于使用动作的结果来渲染的常规模板,这些模板生成如何修改一个现有被渲染页面的指令。这可让你轻易地修改声明 Ajax 应答页面内的多个元素。这些模板内的动作在 Ajax 后台被调用并对发出请求页面做出更新。”
先试试检查 rjs 模板的版本。你可以使用下面指令:
rake update_javascripts
一个小例子:
首先创建要由 rjs 模板更新的视图:
< h1 id='header'>RJS Template Test< /h1 >< ul id='list'>
< li>Dog< /li>
< li>Cat< /li>
< li>Mouse< /li>
< /ul>
确保你的布局包含了 javascript 库:
然后给你的控制器添加要由 link_to_remote 调用的动作:
def add
end
现在 Rails 查找一个扩展名为 .rjs 的模板,以及 .rhtml 和 .rxml ,所以要为你控制器创建了名为 add.rjs 的视图并添加下面代码:
page.insert_html :bottom, 'list',
content_tag("li", "Fox")
page.visual_effect :highlight, 'list', :duration => 3
page.replace_html 'header', 'RJS Template Test Complete!'
如果你好奇 page 对象来自哪里,Rdoc 提供了解释:
“Page 是对你的模板自动有效的一个 JavaScriptGenerator 实例,它被隐含地包装在 ActionView::Helpers::PrototypeHelper#update_page 块内。”
现在当你在浏览器内加载页面并单击 ‘Add a fox’ 链接时,Fox 将被添加到清单并被高亮度突出显示。Header 也将被更新。你也可以渲染局部模板:
page.replace_html 'header', :partial => 'my_partial'
总结:
从这个例子中可以看出,新的 RJS 模板使用 AJAX ,可简单地更新多个页面元素。
http://quirks.exposured.com/ruby/codey-fausers-rails-rjs-template-tutorial/ |