[size=large][color=indigo]使用 RJS 模版来更新页面
如果你想使用 ajax 来调用更新页面中的多个 ODM元素, 具体的说你想在一个应用程序中允许更新你的恶添加项等操作。
还是在你的布局中将 Prototype 和样式包含进去
app/views/layouts/tasks.rhtml:
<html>
<head>
<title>Tasks: <%= controller.action_name %></title>
<%= javascript_include_tag :defaults %>
<%= stylesheet_link_tag 'scaffold' %>
</head>
<body>
<p style="color: green"><%= flash[:notice] %></p>
<%= yield %>
</body>
</html>
通过载入 一个局部模版,index视图中显示了任务列表,
app/views/tasks/index.rhtml:
<h1>My Tasks</h1>
<div id="notice"></div>
<div id="task_list">
<%= render :partial => 'list' %>
</div>
<br />
<% form_remote_tag :url => {:action => 'add_task'} do %>
<p><label for="task_name">Add Task</label>;
<%= text_field 'task', 'name' %></p>
<%= submit_tag "Create" %>
<% end %>
_list.rhtml 局部模版将迭代所用的任务,并显示成列表。
app/views/tasks/_list.rhtml:
<ul>
<% for task in @tasks %>
<% for column in Task.content_columns %>
<li><%=h task.send(column.name) %></li>
<% end %>
<% end %>
</ul>
接着, 为了显示和添加的恶任务,定义两个方法 index和add_task。
app/controllers/tasks_controller.rb:
class TasksController < ApplicationController
def index
@tasks = Task.find :all
end
def add_task
@task = Task.new(params[:task])
@task.save
@tasks = Task.find :all
end
end
最后创建一个RJS模版,用来定义那些元素使用 javascript 来更新
app/views/tasks/add_task.rjs:
page.replace_html 'notice',
"<span style=\"color: green;\">#{@tasks.length} tasks,
updated on #{Time.now}</span>"
page.replace_html 'task_list', :partial => 'list'
page.visual_effect :highlight, 'task_list', :duration => 4
[/color][/size]
分享到:
相关推荐
4. **响应处理**:在处理Ajax请求的控制器中,可以返回一个rjs模板,动态更新页面并反馈给用户。 在描述中提到的博文中,作者分享了一些关于如何使用rjs的实际示例和经验,这可能是对rjs技术的具体应用和实践的探讨...
1. **Page对象**:在RJS模板中,`page`对象是主要的接口,它提供了许多方法来操作DOM元素,如`replace_html`, `insert_html`, `visual_effect`等,用于更新页面内容或实现动画效果。 2. **JavaScript表达式**:Ruby...
标题中的“一些RJS资源和演示入门教程”指的是与Ruby ...通过研究这些文件,开发者可以学习到如何在Rails项目中使用RJS来增强用户体验,实现页面的动态更新,并理解RJS与AJAX、Rails框架的交互方式。
4. **RJS模板**:深入学习如何创建和使用RJS模板,以便在服务器端生成JavaScript代码,然后在客户端执行。 5. **AJAX与JavaScript**:探讨Rails如何与AJAX(异步JavaScript和XML)结合,实现页面无刷新更新,提升...
FormView里可以选择使用日期控件RJS.Web.WebControl.PopCalendar,如果要用到日期控件的话,请把目录PopCalendar2005复制到网站目录里并且引用一下RJS.Web.WebControl.PopCalendar.dll,这个控件是别人的免费开源的控件...
这个分支是使用了rjs作为打包方式,打包配置文件在conf/gulp.rjs.conf.js中, 实现了公共模块与业务模块分离,最大限度优化性能。 也是基于gulp+requirejs+arttemplate+jquery+express的前后端分离的响应式web项目,...
在"rjs-master"这个压缩包中,可能包含了基于上述技术的示例项目或框架,开发者可以研究其结构和配置,学习如何整合这些技术来构建自己的应用。通过理解和掌握这个技术栈,开发者能够构建出既具有现代化前端体验,又...
RequireJS作为一款优秀的AMD(Asynchronous Module Definition)规范实现者,允许我们按需加载和组织代码,但随之而来的问题是,当项目更新时,浏览器可能会因缓存旧的JavaScript文件而导致更新无法生效。...
实际上,通过RJS(Ruby JavaScript)可以直接操作页面元素,使用`insert_html`和`replace_html`等辅助方法,就能动态地添加或替换HTML内容,无需依赖局部模板。 在传统的树结构展示方式中,所有数据通常一次性从...
RequireJS 社区提供了许多插件来扩展其功能,例如: 1. **text!插件**:用于加载文本文件,如HTML模板或CSS。 2. **i18n!插件**:支持国际化,加载不同语言的资源文件。 3. ** almond**:轻量级的模块加载器,用于...
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 ...
这个插件提供了`rjs`任务,用于运行RequireJS的optimizer,将多个模块合并成一个或几个优化过的文件,减小文件大小,提高页面加载速度。配置中,我们可以指定主模块、优化选项以及输出路径,确保每个应用的模块都能...
7. 使用$compile服务编译DOM,将模板转换成浏览器可识别的HTML。 8. ng-init指令对$rootScope里面的变量进行赋值操作。 9. 表达式{{name}}被替换,如示例中的“Hello{{name}}!”被替换成“HelloWorld!”。 完成初始...