【问题标题】:Rails polling with jquery使用 jquery 进行 Rails 轮询
【发布时间】: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("&lt;%= escape_javascript(render @users) %&gt;") 可以。
  • @ChristianVarga 我试过了,但页面仍然没有自动更新!
  • 这就是为什么我把它写成评论,而不是答案。无论如何,您都需要使用.html()
  • @ChristianVarga 成功了!你是对的,我只是有一个小错字,但 .html() 工作。请添加答案,以便我接受
  • 啊,很高兴知道。我实际上并不认为它会解决您的问题。只是认为这将是一个很好的提示。很高兴看到它有效,答案已添加。

标签: jquery ruby-on-rails ajax long-polling


【解决方案1】:

您可能想尝试使用.html() 而不是.replaceWith()。在您的情况下,您想要替换 #users-container 的内容,而不是整个元素本身。

所以你可以这样做:

$("#users-container").html("<%= escape_javascript(render @users) %>")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多