2012-05-10 22 views
5

ザ・「整数にシンボルを変換することはできませんが」私が働いているハッシュ、また、ここに別の例http://pastebin.com/ukTu8GaGは奇妙なエラー

a = { 
    #... 
    :fares => { 
    :itinerary_fare => { 
     :segment_names=>"C", 
     :free_seats => "6", 
     :fare_for_one_passenger => { 
     :free_seats=>"0", 
     :@currency => "TL", 
     :@non_refundable => "false", 
     :@price => "439.0", 
     :@service_fee => "25.0", 
     :@tax => "33.0", 
     :@type => "Y" 
     }, 
     :@currency => "TL", 
     :@non_refundable => "false", 
     :@price => "439.0", 
     :@service_fee => "25.0", 
     :@tax => "33.0", 
     :@type => "C" 
    }, 
    :@currency => "TL", 
    :@tax => "33.0" 
    }, 
    #.. 
} 

です。私はコンソールにこれを書いている場合

私headhachesを与えるコード、

a[:fares][:itinerary_fare].each do |f| 
    puts f[:@price] 
end 

は、それは私が「整数にシンボルを変換することはできません」エラーが発生します。しかし、私が書くと、a[:fares][:itinerary_fare][:@price]かなりうまく動作します。私はそれが動作

%tbody 
    [email protected] do |a| 
    %tr.flight 
     %td 
     -a[:fares][:itinerary_fare].each do |f| 
     -puts f[:@price] #Weird stuff happens here 
     .prices 
     %input{:type=>"radio",:name=>"selectedfight",:value=>"#{a[:id]}"} 
      = f[:@price] 
     %br 

が、それは私のコンソールへの価格を印刷しHAMLファイルにコードを記述する場合

奇妙な部分が、である、まだそれは同じ行で失敗します。

can't convert Symbol into Integer file: flights.haml location: [] line: 18 

これは私が今まで見た中で最も邪魔なエラーです。何か助けてくれてありがとうございます。

ほとんどの場合、1つ以上のものがあります。:itinerary_fare、私は反復する必要があります。 http://postimage.org/image/6nnbk9l35/

答えて

8

a[:fares][:itinerary_fare]Hashであるよう

マイデータを示すことができます。ブロックへのHash#eachyields key-value-pair arrays

したがって、fは、ブロック内の配列[:@price, "439.0"]

したがって、配列インデックスとしてシンボル(:@price)を使用しています。整数が必要です。

a[:fares][:itinerary_fare][:@price]では、あなたはもちろん動作するハッシュキーとして与えています。

-1

なぜ以前の質問が削除されましたか?すでにでした。が回答しましたか?より多くの情報でそれを更新することができます。 あなたの前の投稿で他のユーザーから回答があったため、a[:fares][:itinerary_fare]の要素を反復処理しています。あなたがこれを見ることができます:

a[:fares][:itinerary_fare].each do |f| 
    puts f 
end 

そして、あなたがループを必要といけない、あなたが使用することができます:あなたが1以上のものを持っている場合

a[:fares][:itinerary_fare][:@price] 

:itinerary_fareそれはだから、それは唯一、最後の1を検討しますハッシュのキー:運賃。たぶん、あなたは(要素の最小限に左)のような配列を必要とする:

a = {:id=>"1", 
    :fares=>{ 
     :itinerary_fares=>[{:@price=>"439"}, {:@price=>"1000"}] 
    } 
} 

、その後:

a[:fares][:itinerary_fares].each do |f| 
    puts f[:@price] 
end 
+1

それは何の問題のため申し訳ありませんが、SO誤ってアカウント私の友達と一緒に投稿されましたので、私はそれを削除しました – gkaykck