ExAdmin - 为嵌套数据添加输入

时间:2017-12-21 20:22:31

标签: elixir phoenix-framework ecto exadmin

我正在尝试向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数组吗?或者是否有另一种方法可以轻松编辑此数据?

1 个答案:

答案 0 :(得分:2)

这是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