Почему Ruby on Rails 'Enumerable показывает количество 3, а ".each" выводит элемент только 1 раз - PullRequest
1 голос
/ 09 сентября 2010

У меня есть объект Enumerable, возвращенный из Mongoid (преобразователь объектов MongoDB)

с использованием 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 завершится неудачно? Если я попытаюсь использовать консоль rails, используя p e, она фактически напечатает 3 элемента.

1 Ответ

0 голосов
/ 09 сентября 2010

Я предполагаю, что @employees не ленив, но это проблема с твоим хамлом.

Попробуйте сделать эквивалент этого в хамле:

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

Хорошо, просто прочитайте некоторые документы по хамлу, это работает для вас?

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