this gem私は、ブートストラップの進行状況バーと遅延ジョブのgemを一緒に使うことができました。彼の例では、彼は.hamlファイルを使用していますが、私はプロジェクトでerbとcoffeescriptを使用していますので、私は彼が何をしているのか再現しようとしました。Rails Progress Job with 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>
が、これは私がリンクをクリックしたとき、コードが正しく実行さファイル
$(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である、唯一の問題は、どのように私は私の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
ある
[EDIT]あなたのすべての
をありがとう、私はいくつかの掘削を行なったし、私の仕事のperfom方法は、(i 'がプットを入れて発射されることはありませんようです私が実行している方法では "lol"と表示されず、コンソールには表示されません)