Rails - рендеринг Ajax внутри цикла - PullRequest
0 голосов
/ 03 июня 2018

Я хотел бы обновить несколько ячеек таблицы в моем представлении с помощью ajax.Есть ли возможность запустить частичную продолжительность работы несколько раз в течение цикла?В настоящее время цикл повторяется по всем заданным записям, но часть выполняется один раз.

def CheckUptimes
  require 'net/ssh'
  @username = "updater"
  @password = "üqwlp+ß$2"
  @cmd = "uptime"
  @items = Item.all.where("(category = 'Ubuntu 14 LTS')")
  @items.each do |ci|
    @hostname = ci.name
    begin
      ssh = Net::SSH.start(@hostname, @username, :password => @password)
      @uptime = ssh.exec!(@cmd)
      ssh.close
      @uptime = @uptime.strip
      ci.update_attributes(:uptime => @uptime)
      respond_to do |format|
        format.html
        format.js { render :partial => "uptime", :locals => { :id => ci.id, :uptime => @uptime } }
      end
    rescue
      puts "Unable to connect to #{@hostname} using #{@username}/#{@password}"
    end
  end
end

1 Ответ

0 голосов
/ 03 июня 2018

Если я хорошо понимаю, я думаю, что вы можете сохранить в двух переменных экземпляра (массивах), какие имена хостов были в состоянии подключиться, а какие нет, а затем в checkuptimes.js.erb вы можете показать, какие из них в порядке с коллекцией визуализации

Примерно так:

@con_ok=@con_ko=[]
@items.each do |ci|
@hostname = ci.name
begin
  ssh = Net::SSH.start(@hostname, @username, :password => @password)
  @uptime = ssh.exec!(@cmd)
  ssh.close
  @uptime = @uptime.strip
  ci.update_attributes(:uptime => @uptime)
  con_ok<<ci.id
rescue
   con_ko<< ci.id
end
respond_to do |format|   ## Not necessary ##
   format.html
   format.js
end

in checkuptimes.js.erb

$("#mydiv").html("<%= escape_javascript(render 'uptime', collection: @con_ok)%>");

В этом примере частичный uptime будет отображаться столько раз, сколькоitems содержит @con_ok с локальной переменной con_ok с элементом в массиве (id)

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