2013-03-24 94 views
0
# search for a particular date (between two other dates)  
    a = self.where('created_at > ? AND created_at < ?', yes, tom) 
# search for a particular location 
    a = a.each do |loc| 
    if coorDist(loc.lat, loc.lng, lat, lng) < dist 
     return loc 
    end 
    end 

我想在这里返回像初始值a这样的散列。如何循环散列并收集符合此if语句条件的实体?它在那里的方式,它只是返回第一个结果。带功能的红宝石查询

回答

1
a.select! do |loc| 
    coorDist(loc.lat, loc.lng, lat, long) < dist 
end 

如果你是刚刚返回散列,使用select代替select!

+0

不得不使用.select {| loc |等等}。每个使用do。你明白了,谢谢!我觉得这很容易,应该去睡觉... – Dudo 2013-03-24 04:16:59

1

而不是#eachif,使用#select

# search for a particular location 
a = a.select do |loc| 
    coorDist(loc.lat, loc.lng, lat, lng) < dist 
end