【问题标题】:Rails: How can I update a page with new messages? via Ajax? Jquery?Rails:如何用新消息更新页面?通过阿贾克斯? jQuery?
【发布时间】:2009-06-15 12:31:41
【问题描述】:

在我开始编写代码之前,我试图在这背后获得一些更好的逻辑。

我有一个通过后台进程收集新消息的模型。 (因此数据库每 2-3 分钟更新一次,其中包含任何 new 消息)。

当用户访问他们的收件箱时,他们会看到他们当前的所有消息。这对我来说很容易:

@user = User.find(params[:id])
@user.messages

我在页面上显示用户当前的消息。

但是,如果在用户在该页面(或任何其他页面)上时出现 new 消息怎么办,我如何在不需要刷新整个页面的情况下更新带有新消息的页面.我知道这可以通过 ajax (periodically_call_remote?) 来完成。但我只想突出显示(淡入/闪烁)传入的新消息。

试图绕过这个。我目前的解决方案是对收件箱使用部分,它调用收件箱消息的另一部分。但是我怎样才能定期用“新”消息更新页面呢?说,每2分钟左右检查一次。

想法?

【问题讨论】:

    标签: jquery ruby-on-rails ajax


    【解决方案1】:

    如果您的邮件有时间戳,那么您可以将其用作新邮件 ID 的一部分(HTML ID 不应以数字开头)。这将在页面上唯一标识该消息,并让您使用 JavaScript 等突出显示它。

    【讨论】:

    • 这很有趣,约翰,我特意在记录上加上时间戳,这样我就可以找到所有“新消息”。 (时间戳大于上次“更新”调用的消息)。但是,如果每个 ID 不同,我将如何添加唯一标识它们? (因为每个“新”消息可能有不同的时间戳)。不确定这是否有意义......
    • 然后刷新页面...我想可能周期性调用远程就足够了。只是在这里大声思考......
    • 啊哈!只是重新阅读我的评论,一开始并没有关注你,但我想我明白了。我会将时间戳添加到 new 消息的所有 id 中,然后以这种方式突出显示它们。我们会看看这是否有效..
    【解决方案2】:

    为什么不使用定期观察者? (每 X 分钟轮询一次您的应用)

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2010-12-21
      • 2017-09-09
      相关资源
      最近更新 更多