有没有办法从后台作业更新或修改视图?例如,如果用户想要发送100封电子邮件,我想通过视图向用户显示后台作业的进度。发送第一封电子邮件后,显示1/100,第二封,2/100等
我不知道这是否重要,但我使用的是delayed_job。
答案 0 :(得分:3)
如果您明确希望服务器成为页面更新的源,那么您应该查看actioncable,它是websockets的Rails实现(rails 5.0的一部分,以前的版本可用as a gem)
原则:当给出发送100封邮件的订单时,客户端订阅通道SendMailChannel。只要服务器上运行的作业发送了邮件,它就会通过SendMailChannel将此信息广播给所有订阅者。然后,您可以在咖啡脚本中使用此信息来更新页面并相应地显示计数器。
如果您的唯一目的是更新计数器,考虑到必须完成的所有配置(为订阅和更新开发作业+频道+ coffeescript操作+可能会将您的服务器更改为),这可能有点过分像Puma这样的线程。
每10秒左右更新一次ajax会更加网络化,效率更低,功能更多,但更容易实现。