为什么选择 Ruby on Rails?可枚举显示计数为 3,但“.each”为 3。仅打印项目 1 次
我有一个
使用 HAML 从 Mongoid(MongoDB 对象映射器)返回的 Enumerable 对象:
= @employees.count
= @employees.class
- @employees.each do |e|
=h e.inspect
计数显示 3 该类显示 Enumerable::Enumerator 但只有 1 项被打印出来,
该对象在控制器中返回,使用
@employees = Employee.limit(3).where({:_id.gte => startID.to_i})
If I Change
- @employees.each do |e|
to
- @employees.to_a.each do |e|
then 它会打印出所有 3 项,但为什么 Enumerable 方法会失败?如果我尝试在 Rails 控制台中使用 p e
它实际上会打印出 3 个项目。
I have a Enumerable object returned from Mongoid (MongoDB object mapper)
using HAML:
= @employees.count
= @employees.class
- @employees.each do |e|
=h e.inspect
the count shows 3
the class shows Enumerable::Enumerator
But only 1 item is printed out
the object is returned in the controller using
@employees = Employee.limit(3).where({:_id.gte => startID.to_i})
If I change
- @employees.each do |e|
to
- @employees.to_a.each do |e|
then it prints out all 3, but why will the Enumerable method fail? If I try in rails console using p e
it actually prints out 3 items.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我猜
@employees
并不懒惰,但这是你的 haml 的问题。尝试在 haml 中执行相当于此操作:
好的,只需阅读一些 haml 文档,这对您有用吗?
I'm guessing that
@employees
is not lazy, but that it's a problem with your haml.Try doing the equivalent of this in haml:
Ok, just read through some haml docs, does this work for you?