首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails:带回调的倒计时器

Rails:带回调的倒计时器
EN

Stack Overflow用户
提问于 2015-02-05 17:05:14
回答 1查看 1.2K关注 0票数 0

嗨,我试图实现一个倒计时计时器,我有一个"oferts“模型在我的应用程序,你可以设置的时间,它将是可用的,那里有倒计时播放。

经过大量的研究,我发现了这个创业板,它工作起来像一个魅力,但我面临一个问题,我如何得到的事件,当倒计时到达cero?

我的意思是,我的"oferts“模型有一个布尔属性”活动“,我希望在倒计时结束时将属性”活动“更改为”false“。

你会怎么做?有什么建议吗?我使用的宝石是正确的吗?

谢谢你的帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 04:29:27

很好,我们在粗聚中实现了您所描述的这样一个系统。

但是你想错了,我会为任何需要这个的人找到解决方案。

首先,我将在oferts模型中创建一个范围,如下所示:

代码语言:javascript
运行
复制
#ofert.rb    
scope :are_ready_to_inactive, -> {
      where(active: true).where('ends_at <= ?', Time.zone.now)
    }

因此,我假设您有一个名为ends_at的属性,因此我们可以得到所有的ends_at小于当前时间,这意味着所有过期的ofert。

然后,您只需要创建一个rake任务,以禁用所有过期的ofert:

代码语言:javascript
运行
复制
#lib/tasks/oferts.rake
namespace :oferts do
    desc "Inactive oferts with cron on certain time"
    task inactivatethem: :environment do
        Ofert.are_ready_to_inactive.find_each do |ofert|
          ofert.update_attributes active: false
        end
    end
 end

很好,如果您在控制台rake oferts:inactivatethem中运行,您将禁用所有已过期的ofert,您可以使这个rake任务每分钟运行一次,例如,在任何时候都使用一个类似于宝石的宝石。

代码语言:javascript
运行
复制
#config/schedule.rb
every 1.minute do
    rake 'oferts:inactivatethem'
end

现在,如果您需要实时显示倒计时,您可以使用jQuery插件,如jQueryCountDown,我认为有一个gem为资产管道做好了准备,您只需按照说明就可以了。

我想让你明白倒计时仅仅是“视觉的”--这意味着它只适用于用户,它是一个只对客户端有意义的计时器,在后端,你有你的rake任务,每分钟都在运行,寻找过期的oferts并使其失效。

我不会给您详细介绍如何显示计时器,因为这只是jQuery的东西。

希望这对任何人都有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28349882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档