Rails 4环境,尝试获取一些进度条状态,以1/10秒的间隔使用当前表数据进行更新。
这里是setInterval调用的代码:
setInterval(function () {
var current_roll = parseInt('<%= @run.current_roll %>', 10);
var roll_per = (current_roll / max_roll) * 100
$('#roll_progress_label').html(current_roll);
$('#roll').attr('aria-valuenow', current_roll);
$('#roll').attr('style', 'width:' + roll_per + '%');
// if (current_roll = max_roll) {
// clearInterval(roll_interval);
// }
}, 100);
为了测试目的,我已经注释掉了clearInterval。
所有数学运算正常。进度条使用适当的标签和宽度进行更新,但只需更新一次。间隔不会通过该代码旋转100毫秒。它抓住了第一个值,然后再也没有改变。理论上,此代码应该按照该计划更新#roll_progress_label的.html。 (我也用这个div的.text测试了这个,没有成功。)
另请注意,我已在数据库中确认所有数据都已正确写入。
我知道我错过了一些简单的事情。救命啊!
答案 0 :(得分:0)
我敢打赌,如果你添加console.log
,你会发现这个功能确实每100毫秒运行一次。服务器只呈现@run.current_roll
一次,因此current_roll
的值始终相同。
我认为您想要的是轮询(每隔X毫秒向服务器发出一次请求)或类似WebSockets(我在Rails 5中听到的更容易,但我没有任何直接经验)使用Rails上的WebSockets)。