ruby – “无法将符号转换为整数”奇怪的错误

这是我正在处理的哈希,

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"
      },:@type => "C"
    },:@tax => "33.0"
  },#..
}

另外还有一个例子http://pastebin.com/ukTu8GaG.

给我头脑的代码,

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

如果我把它写入控制台,它会给我“无法将符号转换为整数”错误.但是,如果我写,[:票价] [: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/

解决方法

a [:fares] [:itinerary_fare]是哈希.哈希#每个 yields key-value-pair arrays到块.

所以,f需要例如块中的数组[:@price,“439.0”].

因此,您使用符号(:@price)作为数组索引.预期整数.

在[:fares] [:itinerary_fare] [:@ price]中你给它作为散列键,当然有效.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...