Кабель действия + Sidekiq + Roo - Отображение количества строк CSV - PullRequest
0 голосов
/ 12 июня 2018

У меня есть модель Scanner, цель которой - загрузить файл xlsx через активное хранилище, а затем обработать файл в фоновом режиме с помощью sidekiq и roo gem, чтобы создать новый текстовый файл.Этот процесс работает отлично.Часть, в которой я застрял, заключается в том, что в процессе чтения файла xlsx я хочу отобразить в представлении шоу количество проанализированных строк до тех пор, пока файл txt не будет сгенерирован полностью, поэтому я реализую кабель действий, однако он все еще не работает.Вот код:

Показать представление

Пожалуйста, помогите, заранее спасибо.

/ app / models / scanner.rb

class Scanner < ApplicationRecord
  has_one_attached :target_file
  has_many_attached :documents

  after_create_commit do 
    ScannerBroadcastJob.perform_later(self)
  end
end

/ app / jobs / scanner_broadcast_job.rb

class ScannerBroadcastJob < ApplicationJob
 queue_as :default

  def perform(scanner)
    ActionCable.server.broadcast('scanners_channel', {
      analized_rows: render_analized_rows(scanner)
    })
  end

  private
    def render_analized_rows(scanner)
      ApplicationController.renderer.render(partial: 'scanners/scanner', 
      locals: { scanner: scanner })  
    end
 end

/ app / channel / scanner_channel.rb

 class ScannerChannel < ApplicationCable::Channel
   def subscribed
    stream_from "scanners_channel"
   end

   def unsubscribed
   end

   def create(data)
     Scanner.create({ analized_rows: data['analized_rows'] })
   end
end

/ app / assets / javascripts / channel / scanner.coffee

App.scanner = App.cable.subscriptions.create "ScannerChannel",
  connected: ->
  disconnected: ->
  received: (data) ->
    $("#analized_rows").append(data["analized_rows"])  
  create: (analized_rows) ->
    @perform 'create', analized_rows: analized_rows

/ app / views / scanners / _scanner.html.erb

<div class="scanner" id='analized_rows'>
  <div class="row">
    <div class="col-sm-6 col-sm-offset-3">
      <table class="table">
        <tr>
          <th>Filename</th>
          <td class="text-center"><%= scanner.filename %></td>
        </tr>
        <tr>
          <th>Status</th>
          <td class="text-center"><%= scanner.status %></td>
        </tr>
        <tr>
          <th>Analized Rows</th>
          <td class="text-center"><%= scanner.analized_rows %></td>
        </tr>
        <tr>
          <th>Target File</th>
          <td class="text-center"><%= link_to 
            scanner.target_file.blob.filename, url_for(scanner.target_file) 
            %> </td>
        </tr>
      </table>
    </div>
 </div>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...