当数组中的元素发生变化时,启动实时计数器?
问题描述:
我有从返回的数组的数组具有“名称”,“呼叫状态”,和“时间”字段的API的数据馈送:当数组中的元素发生变化时,启动实时计数器?
[["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”迭代,这意味着我可以使用它作为触发器。但是这不起作用,因为它保存了前一个代理的值,而不是前一个循环中的同一个代理,如果你找到我的话。
我怀疑我在视图中做得太多了,而且逻辑应该在控制器中,但是我可以在它工作后将其移动。现在,这只是我尝试的事情的混搭。
我想我可能会这样做都是错误的,但我对这一切都很陌生。
答
几天后,我终于明白了!只要告诉它帮助别人,这是我是如何做到的。它只是将状态存储在每个循环的相反数组中,因此它可以将一个循环与另一个循环进行比较,以查看是否有变化。
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
感谢您编辑锡文。我将在未来的问题上做同样的事情。 –
没有接受者?我仍然坚持!但是我的新攻击计划是为“名称”和“状态”密钥对创建两个哈希值,然后使用循环计数器和奇数和平均值保存并检查替换的哈希值!让我们看看它是否会起作用! –