Jquery 当有新记录要自动显示时,如何在RubyonRails视图中刷新表
感谢您抽出时间阅读此文章 嗯,这就是我正在尝试做的,我有一个Rails应用程序,它显示一个表,显示数据库中的一些信息,当新数据添加到数据库时,我需要它自动重新加载表(如果可能的话,部分重新加载,所以我不必重新加载整个页面)Jquery 当有新记录要自动显示时,如何在RubyonRails视图中刷新表,jquery,ruby-on-rails,Jquery,Ruby On Rails,感谢您抽出时间阅读此文章 嗯,这就是我正在尝试做的,我有一个Rails应用程序,它显示一个表,显示数据库中的一些信息,当新数据添加到数据库时,我需要它自动重新加载表(如果可能的话,部分重新加载,所以我不必重新加载整个页面) 提前谢谢 为了重新加载表数据,您必须首先通知客户端内容已更改,然后实际重新加载内容。要实现这一点,您必须在客户端使用Javascript/Ajax: 向控制器添加一个操作,返回上次更新的 JSON中的时间戳 将时间戳存储在JS变量中 每n秒调用一次操作,以便比较本地和远程时
提前谢谢 为了重新加载表数据,您必须首先通知客户端内容已更改,然后实际重新加载内容。要实现这一点,您必须在客户端使用Javascript/Ajax:
- 向控制器添加一个操作,返回上次更新的 JSON中的时间戳
- 将时间戳存储在JS变量中
- 每n秒调用一次操作,以便比较本地和远程时间戳
- 使用Ajax将部分表替换为更新的部分表
在提供表的控制器操作上,使用一个参数,以便在从Ajax调用时禁用布局渲染。这样,控制器将只提供相关内容(包含表的视图)。我将这样处理:
- 使用Javascript的setInterval函数和jQuery的$.get()函数加载页面,比如/catalog/1/new_items
setInterval(函数(){
$.get(“/catalog/1/new_items.js”),函数(数据){
$(“新项目”).html(数据);
},
“html”)
}, 30000);代码>
- 创建一个新的_items.js.erb并将其放在app/views/posts文件夹中
new_items.js.erb的内容:
<%= render partial: 'new_items', object: @catalog.new_items.last, as: :item %>
- 用您喜欢的任何东西创建上面的部分(如果您不需要部分,您可以将div的全部内容写入新的_posts.js.erb文件中)
- 将最新方法添加到catalog Controller,该方法定义了
@catalog
等最新.js.erb
要使用的方法
- 将get'/latest'添加到routes.rb
请检查下表。要将表作为部分页面查看并使用它自动更新表yajax,可以使用jQuery的ajax实现。