无法从哈希内部将字符串转换为整数

can't convert String into Integer from inside hash

我正在尝试显示列表中每个结果的搜索数据块中的给定值。我收到错误 "can't convert String into Integer" 如何在我的 linked_agents 中显示下一级数组?

我的特定专栏代码是这样的

    <td>
      <% if result['primary_type'] === "resource" or result['primary_type'] === "digital_object" or result['primary_type'] === "accession" %>
          <%= display_agents(result) %>
      <% end %>
    </td>

和代码

  def display_agents(hash, opts = {})
    object = JSON.parse( hash["json"] )["linked_agents"]
    object2 = object["_resolved"]
    html = "<div class='audit-display-compact'><small>"
    html << "<ul style='list-style-type:none'>"
    html << "<li>#{object2}</li>"
    html << "</ul>"
    html << "</small></div><div class='clearfix'></div>"
    html.html_safe
  end

这是里面的东西 linked_agents。

[{"_resolved"=>{"names"=>[{"sort_name"=>"John Smith"}]}}]

如何让所有sort_name的数据显示出来?可能有多个 _resolved,每个包含 sort_name.

谢谢

更多的数据比更少的数据更有帮助,但本质上你的问题是:"json" 包含一个字符串。而已。不是一个对象。 results[] 无法引用任何内容。假设 JSON 的格式都正确,您需要做的是这样的:

<%= JSON.parse( result["json"] )["linked_agents"]["_resolved"]["sort_name"] %>

现在,这太草率了,不是您想要实现目标的方式(假设这对您的数据集甚至有效)。实际上,您要做的是将 JSON 解析为一个变量,然后以哈希形式处理。

因为没有明确的问题,所以很难清楚地保持这里的工作主题。我鼓励您确保对 ruby 数组、散列和由它们组成的嵌套结构有基本的了解。此外,看看您如何检索进入 results["json"].

的数据

一旦你的数据结构正确,有很多方法可以完成很多事情,但是你需要对这些类型的结构有一个清晰的理解,然后才能施展魔法(并且你需要对你的数据有基本的了解 了解我们才能为您提供解决方案)。

希望对您有所帮助。欢迎在评论中讨论混淆点,当我们为您的问题找到解决方案时,我会更新此答案。