为啥 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次

Posted

技术标签:

【中文标题】为啥 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次【英文标题】:Why Ruby on Rails' Enumerable shows count of 3 but ".each" prints out item 1 time only为什么 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次 【发布时间】:2011-04-09 23:15:55 【问题描述】:

我有一个从 Mongoid(MongoDB 对象映射器)返回的 Enumerable 对象

使用 HAML:

= @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)

如果我改变了

- @employees.each do |e|

- @employees.to_a.each do |e|

然后它会打印出所有 3 个,但为什么 Enumerable 方法会失败?如果我使用p e 在rails 控制台中尝试,它实际上会打印出3 个项目。

【问题讨论】:

【参考方案1】:

我猜@employees不是懒惰,而是你的haml有问题。

尝试在haml中做同样的事情:

<ul>
= @employees.map  |e| "<li>" + e.inspect + "</li>" .join
</ul>

好的,只需阅读一些 haml 文档,这对您有用吗?

- @employees.each do |e|
    %p= h e.inspect

【讨论】:

以上是关于为啥 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Ruby on Rails 的 URL Helper 在我的 URL 中加上句点?

为啥 Ruby on Rails 使用 http://0.0.0.0:3000 而不是 http://localhost:3000?

为啥 Ruby on Rails 的 Enumerable 显示计数为 3 但“.each”仅打印出项目 1 次

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

ruby on rails - 问题捆绑安装nokogiri 1.7.2 on ruby on rails 4.x.

markdown [rails:devise] Ruby on Rails的身份验证gem。 #ruby #rails