1

在 rails4 应用程序中,我有一个很长的任务(可能需要几个小时),由 resque 处理(如 railscasts #271)。

控制器中的创建操作如下所示:

  def create
    @longstuff = Longstuff.new(params[:longstuff])
    if @longstuff.save
      Resque.enqueue(LongStuffHandler, @longstuff.id)
      redirect_to @longstuff, :notice => "Success."
    else
      render 'new'
    end
  end

我想更新用户队列的状态并为他提供有用的信息(统计信息、经过的时间、进度条等)

我的想法是在“新”视图中创建一个 div,该视图每 3 秒使用 javascript 自动刷新一次,并显示 LongStuffHandler 类提供的一些内容。

到目前为止,我已经能够实现使 LongStuffHandler 类将一些 html 写入由 javascript 加载的文件。这会导致几个问题,例如每秒写入文件 10 次并不理想。

我希望 LongStuffHandler 类能够实时导出一些变量并使它们可用于“新”视图,以便仅重新加载部分将使我的页面看起来更新。一个例子是 LongStuffHandler 类有一个名为“@lastlog”的变量,并使其可用于“新”视图,其中有一个由 javascript 自动更新的 div:

<div class="lastlog">
  <h2>Last Log</h2>
  <p><%= @lastlog %></p>
</div>

后台作业是否可以导出这样的变量并让视图导入它?

4

0 回答 0