嗨,我试图实现一个倒计时计时器,我有一个"oferts“模型在我的应用程序,你可以设置的时间,它将是可用的,那里有倒计时播放。
经过大量的研究,我发现了这个创业板,它工作起来像一个魅力,但我面临一个问题,我如何得到的事件,当倒计时到达cero?
我的意思是,我的"oferts“模型有一个布尔属性”活动“,我希望在倒计时结束时将属性”活动“更改为”false“。
你会怎么做?有什么建议吗?我使用的宝石是正确的吗?
谢谢你的帮忙
发布于 2015-11-24 04:29:27
很好,我们在粗聚中实现了您所描述的这样一个系统。
但是你想错了,我会为任何需要这个的人找到解决方案。
首先,我将在oferts模型中创建一个范围,如下所示:
#ofert.rb
scope :are_ready_to_inactive, -> {
where(active: true).where('ends_at <= ?', Time.zone.now)
}因此,我假设您有一个名为ends_at的属性,因此我们可以得到所有的ends_at小于当前时间,这意味着所有过期的ofert。
然后,您只需要创建一个rake任务,以禁用所有过期的ofert:
#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任务每分钟运行一次,例如,在任何时候都使用一个类似于宝石的宝石。
#config/schedule.rb
every 1.minute do
rake 'oferts:inactivatethem'
end现在,如果您需要实时显示倒计时,您可以使用jQuery插件,如jQueryCountDown,我认为有一个gem为资产管道做好了准备,您只需按照说明就可以了。
我想让你明白倒计时仅仅是“视觉的”--这意味着它只适用于用户,它是一个只对客户端有意义的计时器,在后端,你有你的rake任务,每分钟都在运行,寻找过期的oferts并使其失效。
我不会给您详细介绍如何显示计时器,因为这只是jQuery的东西。
希望这对任何人都有帮助。
https://stackoverflow.com/questions/28349882
复制相似问题