2013-01-16 47 views
0

使用Rails和Mongoid。迭代器爲Mongoid文檔返回一個額外的對象

它會更容易放下代碼的解釋:

foo = User.all.to_a 

試圖格式化爲在我的JavaScript可接受的數據。但在我的迭代:

var dump = [] 
<%= foo.each do |boop| %> 
    dump.push(/*some formatted data using boop/*) 
<% end %> 

結果轉儲包含除了文檔對象的可接受的格式也在陣列的結束時加入。

例如,使用導軌控制檯:

foo.each do |boop| 
    print "#{boop.email}\n" 
end 

打印出郵件。最後,在一行中打印出每一個文檔對象。

我直接從上面輸出:

[email protected] 
... 
// Prints out emails until end 

[#<User _id: 50edd7fe021823ea20000001, _type: nil, email: "[email protected]", password_digest: "$2a$10$xXixV8MlqGco0Qq7j5jQaOkXBWQ9cLgQ7yEOtQruxq.HiYg8GOJ4y", phone: nil, firstName: nil, lastName: nil, employNum: nil, dateMade: nil, role_id: "50edd7da021823db20000001">, ... #prints out rest of users in line. 

陣列大小和在分貝數是相同的。我也使用最後一次檢查數組。我正在考慮使用count迭代器,只是考慮數組的長度,但我很好奇爲什麼會發生這種情況。

回答

1

您看到的打印輸出是操作的返回值。例如。這將仍然打印輸出,但會改變歸零塊結束後,

> Object.save 
=> true 

你可以通過這個surpress「0」。

foo.each {|boop| puts "#{boop.email}\n" };0 
+0

好的,所以在上面的例子中,它不是打印,push方法會在返回值爲0之前獲取操作的返回值。是否有其他解決方法? – user1002563

+1

「; 0」提示僅用於在控制檯中進行調試。如果這是令人困惑的,我很抱歉。如果你只是想讓你的Javascript反對一個可接受的格式。您應該將其更改爲JSON對象。 :) – engineerDave

相關問題