2017-04-01 58 views
0

任何人都可以幫助我在這裏找到問題嗎?Do..end循環剛剛返回主陣列

@deals.each.with_index(1) do |deal, i| 
    binding.pry 
    puts "#{deal.title} - #{deal.price} - Rating: #{deal.deal_rating}" 
    # puts "Available for #{deal.price}" 
    # puts "Rating: #{deal.deal_rating}" 
    # puts "#{deal.title}" 
    # puts "Available at " 
end 

如果我做binding.pry,並嘗試在這裏查看這筆交易的價值,它返回我完全@deals陣列,而不是一個交易。

非常感謝您的幫助。

+0

這是奇怪的另外一個。 「deal」應該是'@ deals'數組中的一個元素。你需要什麼?我?在這個例子中你沒有使用它。 –

回答

0

使用只是each_with_index,這將給你的對象和總要素內的指標被迭代:

<% @deals.each_with_index do |deal, i| %> 
    <% binding.pry %> 
    <%= "#{deal.title} - #{deal.price} - Rating: #{deal.deal_rating}" %> 
<% end %> 

這種方式與pry檢查你@deals採取的第一個元素:

[1] pry(#<#<Class:0x007fe0cd161ee8>>)> @deals.first 
=> #<Deal:0x007fe0cb2751d8 
id: 1, 
title: "Deal-0", 
price: 764, 
deal_rating: 93, 
created_at: Sat, 01 Apr 2017 15:00:29 UTC +00:00, 
updated_at: Sat, 01 Apr 2017 15:00:29 UTC +00:00> 

如果您想在您的視圖中執行此操作,請使用unless檢查使用index的第一個元素:

<% @deals.each_with_index do |deal, i| %> 
    <% unless !i.zero? %> 
    <%= "#{deal.title} - #{deal.price} - Rating: #{deal.deal_rating}" %> 
    <% end %> 
<% end %> 

不同的是,與with_index你可以使用一個可選的參數,以抵消開始索引,所以你指定從此處,with_index(1)沒有試圖獲得的第一個元素開始索引,看到這一點:

<% @deals.each.with_index(2) do |deal, index| %> 
    <%= "#{index}: #{deal}" %><br> 
<% end %> 

2: #<Deal:0x007fe0cb55ca90> 
3: #<Deal:0x007fe0cb55c950> 
4: #<Deal:0x007fe0cb55c810> 
... 

這從index 2開始,從0

<% @deals.each_with_index do |deal, index| %> 
    <%= "#{index}: #{deal}" %><br> 
<% end %> 
0: #<Deal:0x007fe0cb55ca90> 
1: #<Deal:0x007fe0cb55c950> 
2: #<Deal:0x007fe0cb55c810> 
3: #<Deal:0x007fe0cb55c6d0> 
4: #<Deal:0x007fe0cb55c590> 
+0

非常感謝您的建議。你解決了我的錯誤!再一次,非常感謝。 :-) –