2017-04-01 10 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 

は、私はそれは1つの契約ではなく、私の完全な@deals配列を返して、binding.pryを行い、ここでの契約の値をチェックしよう。

ご協力いただきありがとうございます。あなたのオブジェクトや要素の合計内部インデックスを与えるだけでeach_with_index

+0

から他の1。 'deal'は' @ deals'配列の要素でなければなりません。私は何のために必要なのですか?この例では使用していません。 –

答えて

0

使用が反復されている:

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

あなたは@dealsから最初の要素を取るpryと検査この方法:

[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

お寄せいただきありがとうございます。あなたは私のエラーを解決しました!もう一度、ありがとう。 :-) –

関連する問題