Ruby-为什么可以';我是否可以迭代从Mongomapper map\u reduce返回的数据?

Ruby-为什么可以';我是否可以迭代从Mongomapper map\u reduce返回的数据?,ruby,Ruby,这可能很简单,但我花了太多时间试图弄明白,我相信这里的人会知道的,所以就这样吧。请耐心点 底线是,我有一些数据,我不知道如何循环 #Get the data from mongomapper map_reduce @urls = DistinctUrls.build.find() puts @urls.count 3 puts @urls.to_json [{"_id":"http://msn.com","value":3.0},{"_id":"http://yahoo.com","value

这可能很简单,但我花了太多时间试图弄明白,我相信这里的人会知道的,所以就这样吧。请耐心点

底线是,我有一些数据,我不知道如何循环

#Get the data from mongomapper map_reduce
@urls = DistinctUrls.build.find()

puts @urls.count
3
puts @urls.to_json
[{"_id":"http://msn.com","value":3.0},{"_id":"http://yahoo.com","value":12.0},{"_id":"http://google.com","value":2.0}]

@urls.each do |entry|
   puts "Here I am"  # Never gets printed, not sure why.
   puts "url" +  entry['_id'] 
end
我不明白的是,如果我有一个计数3,为什么它不会进入循环

我不确定mongomapper或map_reduce细节是否重要。我把它们放在这里以防万一。如果有意义的话,我可以在需要时添加map/reduce的细节。
谢谢你的帮助。

你先写了
@url
,然后写了
@url
。我认为其中只有一个是正确的

更新:正如上面所说的,您可以使用
每个
在光标上迭代,但在完全迭代后,它将被关闭。也许这是您的案例,您已经对它进行了一次迭代。可能是
to_json
做的

您可以使用以下语句检查光标是否关闭:

@urls.closed?

在迭代部分之前检查此项。

首先编写
@url
,然后编写
@url
。我认为其中只有一个是正确的

更新:正如上面所说的,您可以使用
每个
在光标上迭代,但在完全迭代后,它将被关闭。也许这是您的案例,您已经对它进行了一次迭代。可能是
to_json
做的

您可以使用以下语句检查光标是否关闭:

@urls.closed?

在迭代部分之前检查此项。

如果使用了
-w
标志,则如果使用不存在的实例变量,程序将发出警告。所有这些都在此处定义。但是是的,
-w
可以帮上大忙。谢谢@KARASZI。修正了那个错误。@KARASZI,你解决了。如果我将
@url.each
移动到
之前的json
,它就像一个符咒。非常感谢您的帮助。如果使用了
-w
标志,则如果您使用的实例变量不存在,程序将发出警告。所有这些都在此处定义。但是是的,
-w
可以帮上大忙。谢谢@KARASZI。修正了那个错误。@KARASZI,你解决了。如果我将
@url.each
移动到
之前的json
,它就像一个符咒。非常感谢您的帮助。
@url的类别是什么?也许每一个都不是你所期望的。啊哈,我想你已经明白了。@URL的类别是Mongo::Cursor什么是
@URL
?也许每一个都不是你所期望的。啊哈,我想你已经明白了。@URL的类是Mongo::Cursor