如果在Rails / javascript中完成任务,如何更改图标

问题描述 投票:0回答:1

我有这两行内容,每当进行分析时,都会添加一个小图标作为警告:

- if document.analyses.processing.any?
  %i.dashboard__icon.fa.fa-refresh.text-warning{ aria: { hidden: 'true', title: 'Processing' } } 

并在此过程完成后添加了另一个图标%i.dashboard__icon.fa.fa-circle.text-info而不是当前的%i.dashboard__icon.fa.fa-refresh.text-warning,我在else中添加了它:

- if document.analyses.processing.any?
  %i.dashboard__icon.fa.fa-refresh.text-warning{ aria: { hidden: 'true', title: 'Processing' } }
- else
  %i.dashboard__icon.fa.fa-circle.text-info{ aria: { hidden: 'true', title: 'Processed' } }

但是问题是,在此之后,每个完成分析的分析都添加了此fa-circle.text-info。我只想在完成后将其添加到最后一个。

我可以异步实现这种功能,还是应该每20秒左右重新加载一次页面,并检查此过程是否已完成以将图标更改为fa-circle.text-info

javascript ruby-on-rails haml
1个回答
0
投票

没有更多信息,我能做的最好的事情如下所示:

向控制器添加操作:

def refresh_icons
  ...set some instance variable...
  respond_to do
    format.js
  end
end

然后添加一条路线:

resource :something do
  get 'refresh_icons', on: :member
end

在您的JavaScript中添加:

$('document').ready(function() {
  setInterval(function(){
    $.ajax({
      type: 'GET'
      url: 'refresh_icons'
      dataType: 'script'
    })
  }, 20000);
}

将您图标的所有逻辑放入可以在原始视图中呈现的_icons.html.haml部分中,然后添加一个更新视图的视图refresh_icons.js.erb:

$('#dashboard_icons').html('<%= j render partial: 'a_controller/icons' %>');
© www.soinside.com 2019 - 2024. All rights reserved.