1

我發現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方法不會被解僱(我放了放「大聲笑'在我的執行方法,我從來沒有在控制檯中看到它)

回答

1

interval = setInterval( - > var paramJob ='<%= @ job.to_json%>'; // get @job paramete的R - >

//使用字符串 「&」 + 「QUOT;」 代替SYM

變種jobObj = JSON.parse(( '{' + paramJob.slice(paramJob.indexOf( 「SYMid」 ),/ paramJob.length))。replace(/ SYM/g,''')); //參數處理

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

希望這可以幫助你!