Ruby哈希选择

时间:2015-09-08 14:29:45

标签: ruby-on-rails ruby

我有一个YAML文件:

0:
  price: 0
  storage: 8
  instances: 1
  hours: 2
1:
  price: 9.99
  storage: 8
  instances: 2
  hours: 25

我只是试图选择所有付费方案:

@plans = YAML.load_file("#{Rails.root}/config/plans.yml")
@paid_plans = @plans.select {|plan| plan[1]['price'] > 0}

但它说

no implicit conversion of string into integer

我做错了什么?

3 个答案:

答案 0 :(得分:2)

问题与选择的结构有关;它需要一个键/值对。应该是:

@plans.select {|k,v| v['price']>0}

答案 1 :(得分:1)

0:1:等可以是字符串。使用YAML lists或搜索字符串键:

plan['1']['price']

另请注意,您的选择无论如何都没有多大意义,因为它始终会检查N1计划。

答案 2 :(得分:0)

它的字符串不是float / int / number。你需要施展它。为什么不使用I18n enginge?