【发布时间】:2015-03-13 03:13:59
【问题描述】:
我有一个索引页面,列出了所有用户及其状态(可用或不可用),每个用户都可以随时更改他/她的状态。我正在尝试做的是实时轮询以显示最新状态。我已经完成了 Jquery 轮询功能并且它可以工作(尝试了一个简单的警报,它每 10 秒显示一次警报)。现在我不知道在我的 index.js.erb 文件中包含什么,该代码应该刷新包含用户及其状态的 div。我有这个:
$("#users-container").replaceWith("<%= escape_javascript(render @users) %>")
用新用户替换旧用户及其状态,但这不起作用,页面根本没有改变。
有什么建议吗?
这是我的 index.html.erb
<div id="users-container">
<%= render @users %>
</div>
_user.html.erb
<p>
<%= name_with_status(user.full_name, user.status, user.id) %>
</p>
其中 name_with_status 只是一个显示名称、状态的助手。
【问题讨论】:
-
我不认为你想要
replaceWith,因为你实际上并不想替换你的#users-container元素,你想替换它的内容。$("#users-container").html("<%= escape_javascript(render @users) %>")可以。 -
@ChristianVarga 我试过了,但页面仍然没有自动更新!
-
这就是为什么我把它写成评论,而不是答案。无论如何,您都需要使用
.html()。 -
@ChristianVarga 成功了!你是对的,我只是有一个小错字,但 .html() 工作。请添加答案,以便我接受
-
啊,很高兴知道。我实际上并不认为它会解决您的问题。只是认为这将是一个很好的提示。很高兴看到它有效,答案已添加。
标签: jquery ruby-on-rails ajax long-polling