【问题标题】:How can I create an Active Admin table in a custom page and insert JSON data?如何在自定义页面中创建 Active Admin 表并插入 JSON 数据?
【发布时间】:2019-01-07 04:44:30
【问题描述】:

我正在尝试在 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 页面中制作表格以及如何访问/显示深度嵌套的数组/哈希属性的一般指南。谢谢!

【问题讨论】:

  • “boxes.each”中的 var 是我的 json 响应体

标签: ruby-on-rails activeadmin custom-pages


【解决方案1】:

尝试使用递归助手将 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

可能还有其他问题,但这是一个开始。

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多