当数组中的元素发生变化时,启动实时计数器?

问题描述:

我有从返回的数组的数组具有“名称”,“呼叫状态”,和“时间”字段的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”迭代,这意味着我可以使用它作为触发器。但是这不起作用,因为它保存了前一个代理的值,而不是前一个循环中的同一个代理,如果你找到我的话。

我怀疑我在视图中做得太多了,而且逻辑应该在控制器中,但是我可以在它工作后将其移动。现在,这只是我尝试的事情的混搭。

我想我可能会这样做都是错误的,但我对这一切都很陌生。

+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