我正在尝试在Active Admin的自定义页面中构建JSON数据表。 JSON响应嵌套得很深,因此我使用了很多循环。这是我所能获得/尝试过的一些东西:
panel "Boxes" do
boxes.each do |box| #isolate each hash item in the array
# table_for box.values do
box.each do |key, value|
if value.is_a?(Hash) #if value of a hash is a hash
columns do
value.each do |k, v| #iterate through the hash
text_node "#{k}: #{v}"
end
end
elsif value.is_a?(Array) #there's only one value that's an array & the key is "Products"
columns do
value.each do |products_array|
columns do
products_array.each do |k, v|
if v.is_a?(Hash)
v.each do |kk, vv|
if vv.is_a?(Hash)
vv.each do |kkk, vvv|
text_node "#{kkk}: #{vvv}, "
end
else
text_node "#{kk}: #{vv}, "
end
end
else
text_node "#{k}: #{v}, "
end
end
end
end
end
else
# key.each do
# column key
# end
end
end
# end
end
我正在寻找有关如何在自定义Active Admin页面中创建表以及如何访问/显示深度嵌套的数组/哈希属性的一般准则。谢谢!
答案 0 :(得分:0)
尝试使用递归帮助器将JSON转换为所需的字符串:
def nested_hash_to_s(h)
h.map { |k, v| v.is_a?(Hash) nested_hash_to_s(v) : "#{k}: #{v}" }.join(", ")
end
然后您的列简化为:
columns do
text_node nested_hash_to_s(products_array)
end
可能还有其他问题,但这只是一个开始。