在delayed_job之后渲染javascript

时间:2016-06-20 20:19:43

标签: javascript ruby-on-rails delayed-job

我需要在用户提交请求后在后台进行一些处理。作业完成后,我想向用户显示您的工作已完成的消息。

到目前为止我有这个

LIB /作业/ custom_job.rb

firebaseRef.child("products").on('value', (snapshot) => {
  var products = snapshot.val();

  this.setState({
    productList: products
  })
});

custom.js

class CustomJob

  def perform
    sleep 1 # Here will do the background processing.
    ActionView::Base.new('app/views', {}, ActionController::Base.new).render(file: 'teacher/courses/custom')
  end
end

控制器

$(document).ready(function() {
    alert("Your job is done.");
});

工人开始工作并完成它没有错误。

class Teacher::CoursesController < ApplicationController

  def index
    Delayed::Job.enqueue(CustomJob.new)
    @courses = current_teacher.courses.all
  end
end

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要在前端使用某种轮询界面,在后端的对象上查找完整的事件,或使用某种服务,如pusher.com。

我们经常这样做,这是我们发现的更好的模式之一,它允许用户重新加载/离开页面并返回仍然可用的通知,如果它仍在等待完成。

Possible example to check out