为啥 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 快速入門)