Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails使用coffeescript进行作业进度_Javascript_Ruby On Rails_Coffeescript_Progress Bar_Bootstrap 4 - Fatal编程技术网

Javascript Rails使用coffeescript进行作业进度

Javascript Rails使用coffeescript进行作业进度,javascript,ruby-on-rails,coffeescript,progress-bar,bootstrap-4,Javascript,Ruby On Rails,Coffeescript,Progress Bar,Bootstrap 4,我发现可以同时使用引导进度条和延迟作业gem。在他的例子中,他使用了.haml文件,但我在项目中使用了erb和coffeescript,所以我尝试重现他所做的 这是我的控制器 def export @job = Delayed::Job.enqueue StandingsJob.new end 这是路由。rb get 'export', to: 'scraper#export' class StandingsJob < ProgressJob::Base def perf

我发现可以同时使用引导进度条和延迟作业gem。在他的例子中,他使用了.haml文件,但我在项目中使用了erb和coffeescript,所以我尝试重现他所做的

这是我的控制器

def export
    @job = Delayed::Job.enqueue StandingsJob.new
end
这是路由。rb

get 'export', to: 'scraper#export'
class StandingsJob < ProgressJob::Base

  def perform
    update_stage 'Faccio cose'
    update_progress_max 10
    for i in [0..10]
      sleep(2)
      update_progress
    end
  end
end
这是我的主页.erb.html

<%= link_to 'export', export_path, {id:'mario', remote: true} %>

<div class="progress">
  <div class="progress-bar progress-bar-striped active" role="progressbar"
       aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">
    0%
  </div>
</div>
当我点击链接时,代码运行正常,唯一的问题是,我如何告诉我的coffeescript我在控制器操作中创建的作业的id? 谢谢大家

[编辑]

这是我的工作

get 'export', to: 'scraper#export'
class StandingsJob < ProgressJob::Base

  def perform
    update_stage 'Faccio cose'
    update_progress_max 10
    for i in [0..10]
      sleep(2)
      update_progress
    end
  end
end
class StandingsJob
我做了一些挖掘,似乎我工作的perfom方法从未被触发(我在perform方法中放了一个puts'lol',我从未在控制台中看到它)

interval=setInterval(-> var paramJob='';//获取@job参数->

//使用字符串“&”+“quot;”而不是SYM

var jobObj=JSON.parse(“{”+paramJob.slice(paramJob.indexOf(“SYMid”),paramJob.length)).replace(/SYM/g,“”);//参数已被处理

//在ajax中,使用jobObj.id url:'/progress job/'+jobObj.id


希望这能对您有所帮助!

这是客户端与服务器端的问题

在服务器端渲染期间,必须将作业id放在html标记上的a中。根据控制器操作,它应该位于@job变量中

一旦您的页面呈现完毕,您就进入了coffeescript代码(现在是客户端)