我發現this gem使用引導程序進度欄和延遲作業寶石。在他的例子中,他使用.haml文件,但我在我的項目中使用了erb和coffeescript,所以我試圖重現他所做的。Rails咖啡腳本進度作業
這是我控制器
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>
,這是我CoffeeScript的文件
$(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)
的代碼運行正常,當我點擊鏈接,唯一的問題是,我怎麼能告訴我的CoffeeScript,我在我的控制器創建的作業的ID行動? 謝謝大家
[編輯]
這是我工作
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方法不會被解僱(我放了放「大聲笑'在我的執行方法,我從來沒有在控制檯中看到它)