J'ai trouvé this gem pour utiliser ensemble la barre de progression bootstrap et la gemme retardée. Dans son exemple, il utilise le fichier .haml, mais j'utilise erb et coffeescript dans mon projet, j'ai donc essayé de reproduire ce qu'il fait.Rails Progress Job avec CoffeeScript
Ceci est mon contrôleur
def export
@job = Delayed::Job.enqueue StandingsJob.new
end
c'est routes.rb
get 'export', to: 'scraper#export'
et voici mon 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>
et ceci est mon coffeescript fichier
$(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)
Le code fonctionne correctement lorsque je clique sur le lien, le seul problème est, comment puis-je dire à mon coffeescript l'identifiant du travail que j'ai créé dans mon contrôleur action? Merci à tous
[EDIT]
Ceci est mon emploi
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
Je l'ai fait quelques recherches et il semble que la méthode perfom de mon travail est jamais tiré (je mets un puts ' lol » dans ma méthode et j'exécuter ne vois jamais dans la console)