构建哈希时Stringify键错误

时间:2014-05-06 08:15:31

标签: ruby-on-rails ruby hash

我收到stringify_keys错误。

目前我正在调用以下方法,该方法完美无缺:

def attributes
  {
    city:         @content[1..20].strip,
    streetname:   @content[21..40].strip,
    house_number: @content[41..46].strip.to_i
  }
end

现在我正在重构我的代码,我需要从头开始构建哈希,其中键和值根据某些条件填充哈希值(条件尚未写入)。

def attributes
  test = {}
  test["city"]          = @content[1..20].strip
  test["streetname"]    = @content[21..40].strip
  test["house_number"]  = @content[41..46].strip.to_i
end

现在我收到了stringify_keys错误。我查看了文档以获取有关如何构建哈希的线索,但是没有任何可以帮助我的东西。

问题出在哪里?如果您需要更多代码,请询问。

2 个答案:

答案 0 :(得分:3)

密钥是第一段代码中的符号,您必须在第二段代码中最后返回test

def attributes
  test = {}
  test[:city]          = @content[1..20].strip
  test[:streetname]    = @content[21..40].strip
  test[:house_number]  = @content[41..46].strip.to_i
  test
end

答案 1 :(得分:1)

在使用Rails的{​​{1}}中,您可以使用active supportsymbolize_keys查看示例:

stringify_keys

并返回:

  => hash = {"foo"  => 1, 'baz' => 13}
  => {"foo"=>1, "baz"=>13}
  => hash.symbolize_keys
  => {:foo=>1, :baz=>13}