尝试迭代ruby哈希时出现意外的标签

时间:2015-08-04 16:04:22

标签: ruby-on-rails ruby hash

我正在尝试迭代ruby哈希。我不得不承认,我对红宝石的了解很差,我正在努力纠正这个问题,所以如果这是一个非常基本的问题,请耐心等待。

我想知道我的哈希的语法是否已关闭。之所以看起来是因为它是rakefile的一部分,我需要在其中合并多个地址。 (我从来没有做过,我总是只有一个地址需要担心)我知道解决这个问题的方法是将地址作为rakefile构建,然后循环遍历它们。

clinic.build_address.each do | address, value |
                            {
                              (city: "Minneapolis"
                              state: "MN"
                              address1: "316 10th ave"
                              zip: "55414"),
                              (city: "Hudson"
                              state: "WI"
                              address1: "119 Belmont Street"
                              zip: "54016")
                            }
puts build_address

凭借我现在拥有的东西,我得到了一个意想不到的标签(我不喜欢我拥有' city:minneapolis')

有人能够快速查看我对此的看法吗?

2 个答案:

答案 0 :(得分:1)

如果您的Clinic模型与Address模型相关,并且您运行build_address,则不会产生散列,而是ActiveRecord对象。但是,我不确定你的目标到底是什么。

<击>

要迭代哈希,您可以使用:

some_hash.each do |key, value|
   # some logic using key and/or value
end

<击>

也许你的意思是你想要这样的东西:

addresses = [
  {
    city: "Minneapolis"
    state: "MN"
    address1: "316 10th ave"
    zip: "55414"
  },
  {
    city: "Hudson"
    state: "WI"
    address1: "119 Belmont Street"
    zip: "54016"
  }
]

addresses.each { |a| clinic.build_address a }

答案 1 :(得分:0)

很难理解你要做什么,但你的代码不是有效的Ruby代码。我能得到的最接近的是:

{a: "b"}.each do | address, value |
  [
    {
      city: "Minneapolis",
      state: "MN",
      address1: "316 10th ave",
      zip: "55414"
    },
    {
      city: "Hudson",
      state: "WI",
      address1: "119 Belmont Street",
      zip: "54016"
    }
  ]
end