我有来自API的数据Feed,它返回一个包含“name”,“call status”和“time”字段的数组数组:
[["alex", "wrap", "1395673193"], ["bill", "call", "1395673370"], ["chelsea", "wait", "1395673363"], ["david", "wait", "1395673374"], ["kirsty", "call", "1395673340"], ["natalie", "wait", "1395673360"], ["rose", "wait", "1395673374"], ["shirley", "wait", "1395673378"], ["stuart", "call", "1395673101"], ["wendy", "call", "1395673352"]]
时间是Uxix的时间戳,但我认为我现在不需要它。
我在视图中显示它们,每秒都会刷新jQuery:
<% @ta.each do |elem| %>
<td><% elem.each_slice(3) do |a,b,c| %></td>
<td><%= a %></td>
<td><%= b %></td>
<td><%= c %></td>
<% end %>
<% end %>
我想要做的是显示一个像秒表一样的实时计数器,它会在每次b
更改时重置,但我无法弄清楚如何触发时钟启动。
我尝试将以下内容添加到我的视图中,每秒都会被jQuery刷新:
<td><% elem.each_slice(3) do |a,b,c| %></td>
<td><%= a %></td>
<td><%= b %></td>
<td><%= (b == @timecheck ? "0" : "1" ) %></td>
<% @timecheck = b %>
<% end %>
逻辑是“1”应该出现,然后在下一次迭代时返回“0”,这意味着我可以将它用作触发器。但这不起作用,因为它保留了前一个代理的值,而不是前一个循环中的同一个代理,如果你得到我的话。
我怀疑我在视图中做得太多了,逻辑应该在控制器中,但是一旦它工作就可以移动它。现在它只是我正在尝试的混搭。
我想我可能会把这一切都弄错,但我对这一切都很陌生。
答案 0 :(得分:0)
几天后,我终于明白了!只是为了帮助别人,这就是我做到的。它只是将状态存储在每个循环的相反数组中,因此它可以将一个循环与另一个循环进行比较,以查看是否存在更改。
count = 0
@changeodd = Hash.new
@changeeven = Hash.new
@time = Hash.new
loop do
count = count + 1
a = Agentfeed.get("http://myAPI/ajax.php?token=""#{@token}""&method=agents&action=read")
b = a["list"]
@feedarray = []
b.each do |feed|
name = feed["name"]
status = feed["status"]
if count.odd?
@changeodd[name] = status
if @changeeven[name] == status
@time[name] = @time[name] + 1
else
@time[name] = 1
end
else
@changeeven[name] = status
if @changeodd[name] == status
@time[name] = @time[name] + 1
else
@time[name] = 1
end
end
@feed = []
@feed << name << status << @time[name]
@feedarray << @feed
end