Javascript Rails使用coffeescript进行作业进度
我发现可以同时使用引导进度条和延迟作业gem。在他的例子中,他使用了.haml文件,但我在项目中使用了erb和coffeescript,所以我尝试重现他所做的 这是我的控制器Javascript Rails使用coffeescript进行作业进度,javascript,ruby-on-rails,coffeescript,progress-bar,bootstrap-4,Javascript,Ruby On Rails,Coffeescript,Progress Bar,Bootstrap 4,我发现可以同时使用引导进度条和延迟作业gem。在他的例子中,他使用了.haml文件,但我在项目中使用了erb和coffeescript,所以我尝试重现他所做的 这是我的控制器 def export @job = Delayed::Job.enqueue StandingsJob.new end 这是路由。rb get 'export', to: 'scraper#export' class StandingsJob < ProgressJob::Base def perf
def export
@job = Delayed::Job.enqueue StandingsJob.new
end
这是路由。rb
get 'export', to: 'scraper#export'
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
这是我的主页.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我在控制器操作中创建的作业的id?
谢谢大家
[编辑]
这是我的工作
get 'export', to: 'scraper#export'
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
class StandingsJob
我做了一些挖掘,似乎我工作的perfom方法从未被触发(我在perform方法中放了一个puts'lol',我从未在控制台中看到它)interval=setInterval(->
var paramJob='';//获取@job参数->
//使用字符串“&”+“quot;”而不是SYM
var jobObj=JSON.parse(“{”+paramJob.slice(paramJob.indexOf(“SYMid”),paramJob.length)).replace(/SYM/g,“”);//参数已被处理
//在ajax中,使用jobObj.id
url:'/progress job/'+jobObj.id
希望这能对您有所帮助!这是客户端与服务器端的问题 在服务器端渲染期间,必须将作业id放在html标记上的a中。根据控制器操作,它应该位于@job变量中 一旦您的页面呈现完毕,您就进入了coffeescript代码(现在是客户端)