【问题标题】:`[]': can't convert String into Integer (TypeError)`[]': 无法将字符串转换为整数 (TypeError)
【发布时间】:2015-03-01 08:16:27
【问题描述】:

我有一个数组:

sheets # => [{"id"=>3, "subject"=>"www", "body"=>"www", "target_groups"=>"www", 0=>3, 1=>"www", 2=>"www", 3=>"www"}]

我正在尝试调用此数组中的某个元素。我尝试了以下方法:

puts sheets[2] # => nil
puts sheets["subject"] # =>  `[]': can't convert String into Integer (TypeError)
puts sheets["subject.to_i"] # => `[]': can't convert String into Integer (TypeError) also.

我们将不胜感激。

【问题讨论】:

    标签: ruby arrays hashtable


    【解决方案1】:

    哈希对象在一个数组中。

    你需要先获取哈希对象(sheets[0]),然后你可以使用key来获取你想要的项目:

    sheets = [{"id"=>3, "subject"=>"www", "body"=>"www",
              "target_groups"=>"www", 0=>3, 1=>"www", 2=>"www", 3=>"www"}]
    sheets[0]["subject"]
    # => "www"
    

    【讨论】:

    • @falsetru 通常在散列中键/值不会按照我们指定的顺序存储在内存中,所以如果我们指定 sheet[0] 那么它将写入 id
    • @khan, sheets 不是哈希,而是哈希数组:sheets = [...]
    • k 所以在这种情况下 sheet[1]["subject"] 应该返回 www 并且你能告诉我如何访问多个哈希,我的意思是 sheet[0][''] sheet[1 ][""]
    • @khan,你想要这样的东西吗? sheets.map { |sheet| sheet['subject'] }
    • @falsetru 这是我的数据 [{"Item_No"=>"7", "Update_Date"=>Wed Jun 03 "User _ID"=>"SAM-5555", "CREATE_DATE"=> 5 月 26 日星期二,“ID”=>“5555”,“CRT_USER_ID”=>“SAM-5555”}] 散列在一个数组中,正如你之前所说,我尝试了返回“7”的 item [0]["Item_No"]而且我还想要下一个哈希的值,所以我做了 item[2]["ID"] 我收到以下错误“nil:NilClass 的未定义方法 `[]'”,我实际上想要做的是捕获在单个变量中检索数据并用测试数据或任何其他有关它的建议对其进行断言将是有用的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-12-18
    • 2014-10-24
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多