2011-01-31 13 views
1

マイアレイ:アレイ内の最後のアイテムのインデックスを検索するにはどうすればよいですか?

(rdb:381) pp params[:payments] 
{"0"=>{":amount_paid"=>"100.00", ":date_paid"=>"2/27/2008"}, 
"1"=>{":amount_paid"=>"80.00", ":date_paid"=>"3/27/2008"}, 
"2"=>{":amount_paid"=>"100.00", ":date_paid"=>"5/8/2008"}} 

私は、これはオブジェクトであるとは考えていません。

NoMethodError Exception: undefined method `last' for #<ActiveSupport::HashWithIndifferentAccess:0x1065e8448> 

私はその最後の項目のインデックスを見つけようとしています:params[:payments].last戻り、これを実行します。この場合、答えは、または「2」

答えて

4

ですねえ、あなたの配列は、実際にはハッシュです。 params[:payments].keys.map(&:to_i).max.to_s

実際の配列を戻す方が良いでしょう。 :paymentsオプションはどのように生成されていますか?

+0

WOW!私は真に今までのところbtweenハッシュと配列の違いを知らなかった。これは本当にありがとう! – Trip

0

値がハッシュであり、配列ではないので、注文やインデックスはありません。あなたがRuby 1.9を使用している場合を除きます。

+0

ハッシュは、1.9 – Nakilon

+0

からオーダーしています!ありがとうナキロン! –

+0

"ハッシュは1.9以来発注しています"明確にするために、ハッシュはソート順ではなく挿入順を維持しています。 [Hash docs](http://rubydoc.info/stdlib/core/1.9.2/Hash)から: "ハッシュは、対応するキーが挿入された順序で値を列挙します。" –

関連する問題