我试图在列表中的每个结果的搜索数据块中显示给定值。我收到错误"无法将字符串转换为整数"如何在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。
由于
答案 0 :(得分:1)
更多的数据比更少的数据更有用,但基本上你的问题是:“json”包含一个字符串。而已。不是一个对象。您无法使用results[]
引用任何内容。假设JSON格式正确,您需要做的是:
<%= JSON.parse( result["json"] )["linked_agents"]["_resolved"]["sort_name"] %>
现在,这非常草率,而不是你想要实现目标的方式(假设这对你的数据集甚至有效)。实际上,您要做的是将JSON解析为变量,并以哈希形式完成。
由于没有明确的问题,很难清楚地保持这里的主题。我鼓励您确保您对ruby数组,散列和由其组成的嵌套结构有基本的熟悉程度。另外,请查看您如何检索results["json"]
中的数据。
一旦你的数据结构合理,有许多方法可以完成许多事情,但是你需要清楚地了解这些类型的结构才能实现魔法(并且你需要掌握你的基本知识) >在我们为您提供解决方案之前, 我希望这很有帮助。请随意在评论中讨论混淆点,我将在解决您的问题时更新此答案。