Ruby on rails 如何在延迟作业中调用重定向_

Ruby on rails 如何在延迟作业中调用重定向_,ruby-on-rails,delayed-job,redirecttoaction,Ruby On Rails,Delayed Job,Redirecttoaction,我想调用redirect_在延迟作业中运行。 我有文件print_job.rb class PrintJob < Struct.new(:device,:survey,:filter_tags,:day1,:day2,:lastsurvey, :scale) def perform pc = PagesController.new pc.redirect_to "http://google.com" #pc.redirect_to :action =>

我想调用redirect_在延迟作业中运行。 我有文件print_job.rb

class PrintJob < Struct.new(:device,:survey,:filter_tags,:day1,:day2,:lastsurvey, :scale)
  def perform
    pc = PagesController.new
    pc.redirect_to  "http://google.com"
    #pc.redirect_to :action => "print", :format => "pdf", :device => device, :survey => survey, :filter_tags => filter_tags,
    #:day1 => day1, :day2 => day2, :lastsurvey => lastsurvey, :scale => scale
  end

  def success(job)
  end
end
class PrintJob“print”、:format=>“pdf”、:device=>device、:survey=>survey、:filter_tags=>filter_tags、,
#:day1=>day1,:day2=>day2,:lastsurvey=>lastsurvey,:scale=>scale
终止
def成功(工作)
终止
终止
但它不起作用。如果我把你放到“htpp://google.com". 它说没有任何方法可以将你重定向到

目前的情况是,我使用的是带有延迟作业的pdf工具包,但没有直接导出pdf文件。如果我想以pdf格式打开它,我有link locahost/print,只需放置localhost/print.pdf或使用link_to:action=>“print”,:format=>“pdf”,但如果pdf文件很大,它的性能不好,所以我想在延迟的作业中打开localhost/print.pdf。那么我该如何解决这个问题呢


那么,我现在如何才能在延迟的作业中调用重定向_?谢谢大家!

延迟的作业被设计为在后台运行长进程,而不会中断rails控制器的http请求。所以它就像

  • 1) 控制器获取一个请求
  • 2) 控制器调用延迟的作业并通过“长时间运行” 过程
  • 3) 控制器无需等待延迟作业的答复即可继续
所以在这种情况下,你问的有点“奇怪”,但是,如果你的要求是通知用户,等等。。一旦过程完成

a) 通过
delayed_job
更新数据库列,并从视图中读取 b) 使用某种
服务器推送
方法、its或使用类似gem的


HTH

如上所述,您可以使用数据库(一个状态列)并以这种方式继续(worker updates列、page how auto refresh和get column Value Continuous)但此时,我强烈建议使用(现在是rails 5+的一部分)

有了它,您可以轻松地在视图或控制器与任何工作程序之间创建一个通信通道,您所要做的就是为用户设置一个通道,然后从工作程序发送消息,而您已经有一个监听器(带有js代码的视图),该监听器将从通道公共通道获取广播消息(在视图和工作程序之间使用相同的名称/id等,这实际上只是一个表示通道名称的字符串,js代码(前端)和rails(后端)配置都有)


希望这能有所帮助!

谢谢你的评论。目前的情况是我正在使用pdf工具包延迟作业,但没有直接导出pdf文件。如果我想以pdf格式打开它,我有链接,只需将链接放置或使用到:action=>“print”,:format=>“pdf”但是如果pdf文件很大,它的性能就不好,所以我想在延迟作业中打开。那么我如何解决这个问题呢?在这种情况下,我能想到的最好办法是,实现某种服务器推送通知系统,这样一旦延迟作业结束,它就会向客户端浏览器发送推送通知,就像你收到通知一样堆栈溢出中的ons。:)