Do..end 循环只返回主数组
Do..end loop just returning main array
谁能帮我找出问题所在?
@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 数组而不是一笔交易。
非常感谢您的帮助。
只使用 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>
谁能帮我找出问题所在?
@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 数组而不是一笔交易。
非常感谢您的帮助。
只使用 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>