【问题标题】:can't convert String into Integer from inside hash无法从内部哈希将字符串转换为整数
【发布时间】:2016-01-12 19:58:02
【问题描述】:

我正在尝试显示列表中每个结果的搜索数据块中的给定值。我收到错误“无法将字符串转换为整数”如何在我的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 值中)。我怀疑你的逻辑工作正常,你只需要对那条数据做一些工作。您能否验证您的逻辑是否正常工作(通过在 元素中插入 或一些静态文本)?
  • 元素工作正常。我可以放置常规文本,它可以工作以及主要对象中的任何内容。
  • 好的,这证实了你的逻辑是正确的。问题是结果哈希中没有“sort_name”键。您需要在某处处理result['json'],以便您可以访问其中的正确值。如果不了解您的应用程序和“json”数据中包含的信息,我们将很难解析。我建议展示提供这些结果的操作并解释results['sort_name'] 的意图。
  • 我将 search_data 缩短为仅与此问题相关的数据。

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


【解决方案1】:

更多的数据会比更少的数据更有帮助,但本质上你的问题是:“json”包含一个字符串。而已。不是一个对象。 results[] 没有您可以参考的内容。假设 JSON 格式正确,您需要做的是这样的:

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

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

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

一旦你的数据结构正确,就有很多方法可以完成很多事情,但是你需要清楚地了解这些类型的结构,然后才能发挥作用(并且你需要对你的工作有一个基本的了解不了解我们才能为您提供解决方案)。

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

【讨论】:

  • 我决定创建一些代码来帮助显示它。我将它添加到原始帖子中。我收到一个错误“nil:NilClass 的未定义方法 `[]'”。
  • 我又做了一次调整,得到了这个错误。 “无法将字符串转换为整数”
  • 现在是“#的未定义方法`[]='”
  • 您在哪一行得到这些错误?为什么要将散列转换为 json,然后将 json 转换为 OpenStruct?
  • 我离得更近了,但遇到了“无法将字符串转换为整数”的错误。我似乎无法获取 link_agents 中的数据。
猜你喜欢
相关资源
最近更新 更多
热门标签