在 Ruby on Rails 中使用 ActionCable 更新多个 div 的最佳做法是什么?

What are the best practices of updating multiple divs with ActionCable in Ruby on Rails?

我在 Rails 网站上有一个 Ruby。其中一个索引页有一个包含多行的 table。我还有一个后台作业,对每一行执行某些操作,每行大约需要 5-10 秒。

当后台作业中的处理完成后,我想将每一行的状态从 'Processing...' 更新为 'Done'。

我想使用 Action Cable 来进行更新,但到目前为止我只使用 Action Cable 来更新页面上的一个元素,而不是多个元素。

我想知道设置我的代码以更新每一行中的状态的正确方法是什么。是否必须为每一行单独打开一个频道?

当然可以。而且您不必为每一行打开频道。只需使用状态已更改的作业 ID 和 table 中具有相同 ID 的对应行。

ActionCable.server.broadcast "job_status_update", job_id: 'xxxxx', status: 'complete'

.html

<table>
  <% jobs.each do |job|%>
   <tr>
     <td id="<%= job_id %>">
     <%= job.status %>
     </td>
   </tr>
 <% end %>
</table>

.咖啡

App.chatChannel = App.cable.subscriptions.create { channel: "JobChannel" },
   received: (data) ->
     $(data.job_id).innerText(data.status)