无法从内部哈希中将String转换为Integer

时间:2016-01-12 19:58:03

标签: ruby-on-rails ruby-on-rails-3

我试图在列表中的每个结果的搜索数据块中显示给定值。我收到错误"无法将字符串转换为整数"如何在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,每个_resolved包含sort_name。

由于

1 个答案:

答案 0 :(得分:1)

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

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

现在,这非常草率,而不是你想要实现目标的方式(假设这对你的数据集甚至有效)。实际上,您要做的是将JSON解析为变量,并以哈希形式完成。

由于没有明确的问题,很难清楚地保持这里的主题。我鼓励您确保您对ruby数组,散列和由其组成的嵌套结构有基本的熟悉程度。另外,请查看您如何检索results["json"]中的数据。

一旦你的数据结构合理,有许多方法可以完成许多事情,但是你需要清楚地了解这些类型的结构才能实现魔法(并且你需要掌握你的基本知识) >在我们为您提供解决方案之前, 我希望这很有帮助。请随意在评论中讨论混淆点,我将在解决您的问题时更新此答案。