微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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]中你给它作为散列键,当然有效.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐