ExAdmin - 为嵌套数据添加输入

ExAdmin - Add input for nested data

我正在尝试将更多数据添加到管理界面的 CRUD。我的架构如下所示:

schema "tree" do
  field :name, :string
  field :metadata, :map
  field :created_at, Ecto.DateTime
  field :updated_at, Ecto.DateTime
end

我的表格目前看起来像这样:

form framework_tree do
  inputs do
    input tree, :name
  end
  inputs "Metadata" do
    input tree, :metadata, schema: [icon: :string, index: :integer, title: :string]
  end
end

元数据如下所示:

{   
    "metadata": {
        "index": 1,
        "info": {
            "text": "Some random text"
        },
        "icon": "icon_1",
        "data_points": [
            {
                "default": {
                    "name": "Default"
                }
            },
            {
                "other": {
                    "name": "Other"
                }
            }
        ]
    }
}

到目前为止,我能够编辑顶级元数据字符串和整数。但我想编辑 info.text 以及 data_points 的数组。我可以将它们添加到表单中的 schema 数组吗?或者有其他方法可以轻松编辑此数据吗?

这是 Ecto.Schema.embedded_schema/1:

的完美用例
defmodule Tree do
  use Ecto.Schema

  schema "tree" do
    field :name, :string
    embeds_one :metadata, Metadata
    field :created_at, Ecto.DateTime
    field :updated_at, Ecto.DateTime
  end
end

defmodule Metadata do
  use Ecto.Schema

  embedded_schema do
    field :index
    field :info
    field :icon
    embeds_many :datapoints, Datapoint
  end
end

defmodule Datapoint do
 ...
end