Ruby on rails 如何将散列中的值和另一个散列中的值相加

Ruby on rails 如何将散列中的值和另一个散列中的值相加,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我有一个问题,我正在为我的应用程序使用散列,这个散列收集并应该对一些数据求和 def os_versions @hash_os_versions = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) } for user in @users do for os_version in user.profile.os_versions do unless @hash_os_versions.key?(os_versi

我有一个问题,我正在为我的应用程序使用散列,这个散列收集并应该对一些数据求和

def os_versions
  @hash_os_versions = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }
  for user in @users do
    for os_version in user.profile.os_versions do
      unless @hash_os_versions.key?(os_version.operating_system_id.to_s)
        @hash_os_versions[os_version.operating_system_id.to_s][os_version.name] = 0
      end
        @hash_os_versions.values.inject(0){|h,k| k[os_version.name] = 1}
    end
  end
  @hash_os_versions
end
此哈希结果:

{“1”=>{“Fedora”=>1,“OSX10.4老虎”=>1,“OSX10.6雪豹”=>1,“Windows2000”=>1,“Debian”=>1,“OpenSUSE”=>1,“OSX10.5豹”=>1,“OSX10.7狮子”=>1,“红帽”=>1,“Ubuntu”=>1,“Windows7”=>1,“Windows98”=>1,“WindowsVista”=>1,“WindowsXP”=>1,“WindowsXP”=>1”,“OSX10.4”=>1,“OSX10.6老虎”=>1,“Windows2000”=>=>1,“Fedora”=>1,“OpenSUSE”=>1,“OSX10.5Leopard”=>1,“OSX10.7Lion”=>1,“Red Hat”=>1,“Ubuntu”=>1,“Windows7”=>1,“Windows98”=>1,“WindowsVista”=>1,“WindowsXP”=>1},…}

基本上: id\u操作\u系统=>os\u版本\u名称=>count

但是,我无法将这些值相加,我尝试了:

@hash_os_versions.values.inject(0){|h,k| k[os_version.name] += 1}
但返回一个错误:

undefined method `+' for {}:Hash
我知道我需要使用inject,但它不起作用


Ps:请,对不起,我的英语

您想如何添加散列中的这些值?我想制作一个计数器,每次交互我都会检查enter是否存在,如果是,我会在散列中增加计数器。