我发现this gem可以同时使用引导进度条和延迟的工作gem。在他的示例中,他使用.haml文件,但是我在项目中使用了erb和coffeescript,因此我尝试重现他的工作。
这是我的控制器
def export
@job = Delayed::Job.enqueue StandingsJob.new
end
这是routes.rb
get 'export', to: 'scraper#export'
这是我的home.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>
这是我的coffescript文件
$(document).on "turbolinks:load", ->
$('#mario').on 'click', ->
alert('hocliccatoooo')
interval = setInterval( ->
$.ajax(
url: '/progress-job/' **** What should I add here?????****,
success: (job) ->
console.log('loool')
stage
progress
if job.last_error != null
$('.progress-status').addClass('text-danger').text(job.progress_stage);
$('.progress-bar').addClass('progress-bar-danger');
$('.progress').removeClass('active');
clearInterval(interval);
if job.progress_stage != null
stage = job.progress_stage
progress = job.progress_current / job.progress_max * 100
else
progress = 0
stage = 'Uploading file?'
if progress != 0
$('.progress-bar').css('width', progress + '%').text(progress + '%')
$('.progress-status').text(stage);
error: ->
alert('errore')
$('.progress').removeClass('active');
$('.progress-bar').css('width', '100%').text('100%');
$('.progress-status').text('Finito!!!');
clearInterval(interval);
)
, 100)
当我单击链接时,代码可以正确运行,唯一的问题是,如何将我在控制器操作中创建的作业的ID告诉我的coffeescript?
谢谢你们
[编辑]
这是我的工作
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
我做了一些挖掘工作,似乎永远不会解雇我的perfom方法(我在Perform方法中放了一个put“ lol”,但在控制台中却从未看到过)
最佳答案
间隔= setInterval(->
var paramJob =''; //获取@job参数->
//使用字符串“&” +“ quot;”代替SYM
var jobObj = JSON.parse(('{'+ paramJob.slice(paramJob.indexOf(“ SYMid”),paramJob.length))。replace(/ SYM / g,'“'))); //已处理参数
//在ajax中使用jobObj.id
网址:“ / progress-job /” + jobObj.id,
希望这可以帮到你!
关于javascript - Rails Progress Job与Coffeescript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46451598/