尝试显示来自散列的字段但得到 nil:NilClass 的未定义方法“[]”
Trying to display fields from hash but getting undefined method `[]' for nil:NilClass
我在尝试显示来自 json 已解析哈希的字段时收到错误消息“nil:NilClass 的未定义方法‘[]”。如何获取要显示的 coll_title 数据?
数据来自alinks:
[{
"role"=>"source",
"relator"=>"dnr",
"terms"=>[],
"_resolved"=>{
"lock_version"=>0,
"publish"=>true,
"display_name"=>{
"coll_num"=>"024",
"coll_title"=>"Collection Title"
}
}
}]
代码:
def display_agents(hash, opts = {})
html = "<div><small>"
html << "<ul style='list-style-type:none'>"
alinks = JSON.parse( hash["json"] )["linked_agents"]
alinks.each do |_resolved|
html << "<li>#{_resolved["display_name"]["coll_title"]}</li>"
end
html << "</ul>"
html << "</small></div><div class='clearfix'></div>"
html.html_safe
end
来电:
<td>
<% if result['primary_type'] === "resource" or result['primary_type'] === "digital_object" or result['primary_type'] === "accession" %>
<%= display_agents(result) %>
<% end %>
</td>
错误:
undefined method `[]' for nil:NilClass
Extracted source (around line #85):
82: <% end %>
83: <td>
84: <% if result['primary_type'] === "resource" or result['primary_type'] === "digital_object" or result['primary_type'] === "accession" %>
85: <%= display_agents(result) %>
86: <% end %>
87: </td>
88: <%#<td>%>
编辑:添加方法调用和错误显示。
您的 each
块中的 _resolved
是整个哈希,即。对于您的示例数据,它等于:
{
"role"=>"source",
"relator"=>"dnr",
"terms"=>[],
"_resolved"=>{
"lock_version"=>0,
"publish"=>true,
"display_name"=>{
"coll_num"=>"024",
"coll_title"=>"Collection Title"
}
}
}
你能明白为什么检索 的 "display_name"
密钥 哈希会返回 nil
吗?
假设您显示的来自链接的数据是 linked_agents 数组(您的问题不是 100% 清楚)- 那么您需要
alinks.each do |agent_link|
html << "<li>#{agent_link["_resolved"]["display_name"]["coll_title"]}</li>"
end
我在尝试显示来自 json 已解析哈希的字段时收到错误消息“nil:NilClass 的未定义方法‘[]”。如何获取要显示的 coll_title 数据?
数据来自alinks:
[{
"role"=>"source",
"relator"=>"dnr",
"terms"=>[],
"_resolved"=>{
"lock_version"=>0,
"publish"=>true,
"display_name"=>{
"coll_num"=>"024",
"coll_title"=>"Collection Title"
}
}
}]
代码:
def display_agents(hash, opts = {})
html = "<div><small>"
html << "<ul style='list-style-type:none'>"
alinks = JSON.parse( hash["json"] )["linked_agents"]
alinks.each do |_resolved|
html << "<li>#{_resolved["display_name"]["coll_title"]}</li>"
end
html << "</ul>"
html << "</small></div><div class='clearfix'></div>"
html.html_safe
end
来电:
<td>
<% if result['primary_type'] === "resource" or result['primary_type'] === "digital_object" or result['primary_type'] === "accession" %>
<%= display_agents(result) %>
<% end %>
</td>
错误:
undefined method `[]' for nil:NilClass
Extracted source (around line #85):
82: <% end %>
83: <td>
84: <% if result['primary_type'] === "resource" or result['primary_type'] === "digital_object" or result['primary_type'] === "accession" %>
85: <%= display_agents(result) %>
86: <% end %>
87: </td>
88: <%#<td>%>
编辑:添加方法调用和错误显示。
您的 each
块中的 _resolved
是整个哈希,即。对于您的示例数据,它等于:
{
"role"=>"source",
"relator"=>"dnr",
"terms"=>[],
"_resolved"=>{
"lock_version"=>0,
"publish"=>true,
"display_name"=>{
"coll_num"=>"024",
"coll_title"=>"Collection Title"
}
}
}
你能明白为什么检索 的 "display_name"
密钥 哈希会返回 nil
吗?
假设您显示的来自链接的数据是 linked_agents 数组(您的问题不是 100% 清楚)- 那么您需要
alinks.each do |agent_link|
html << "<li>#{agent_link["_resolved"]["display_name"]["coll_title"]}</li>"
end