我想用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
答案 0 :(得分:1)
如果我理解得很好,我认为你可以保存两个实例变量(Arrays),哪些主机名能够连接,哪些不能连接,然后在checkuptimes.js.erb
中你可以显示哪些变量可以用{{3} }}
像这样的东西
@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
checkuptimes.js.erb
中的
$("#mydiv").html("<%= escape_javascript(render 'uptime', collection: @con_ok)%>");
在这个例子中,部分uptime
将被呈现为项目包含@con_ok的次数,其中局部变量con_ok
包含数组中的项目(id)