t convert Symbol to Integer» странная ошибка

Это хеш, над которым я работаю,

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"
  }, 
  #..
}

также здесь другой пример http://pastebin.com/ukTu8GaG.

Код, вызывающий у меня головную боль,

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

Если я напишу это в консоль, появится ошибка "невозможно преобразовать символ в целое число". Но если я напишу a[:fares][:itinerary_fare][:@price], все будет работать нормально.

Самое странное, что если я пишу код в haml-файл,

%tbody
    -@flights.each 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

он работает, он выводит цены на мою консоль, но не работает в ТОЙ ЖЕ СТРОКЕ.

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

Это самая неприятная ошибка, которую я когда-либо видел, спасибо за любую помощь.

В большинстве случаев их больше 1 :itinerary_fare, мне приходится повторять.

Мои данные можно показать как http://postimage.org/image/6nnbk9l35/

5
задан undur_gongor 10 May 2012 в 21:02
поделиться