在ExAdmin中进行编辑时,如何在定义为集合下拉列表时保留该值

时间:2017-12-13 04:16:54

标签: elixir exadmin

在ExAdmin中进行编辑时,使用集合定义的所有字段都会丢失其值。编辑时如何保留它们?

form vehicle do
  inputs do
    input vehicle, :vehicle_type, collection: Enum.map(VehicleTypeEnum.__enum_map__, fn a -> Atom.to_string(a) end)

enter image description here

选择和创建作品,但是当我点击编辑时,它会返回到为每个下拉列表选择车辆类型。

[更新]
问题似乎是我正在使用EctoEnum。在定义为字符串的字段上使用时,集合下拉列表按预期工作。 vehicle_type字段定义为VehicleTypeEnum

模型/ vehicle.ex

schema "vehicles" do
  field :vehicle_type, VehicleTypeEnum
  field :display_name, :string

ecto_enums.ex

import EctoEnum
defenum VehicleTypeEnum, :vehicle_type, [:car, :bus, :truck]

有没有办法绕过这个并仍然使用EctoEnum和ExAdmin集合下拉列表?将它们作为原子保持不起作用。

1 个答案:

答案 0 :(得分:2)

我认为您可能无法正确浏览集合,因为ex_admin需要接收一个params元组,其值为string。请尝试重写您的代码,如下所示:

Enum.map(VehicleTypeEnum.__enum_map__, fn a -> Atom.to_string(a) end)

到此:

Enum.map(
  VehicleTypeEnum.__enum_map__, 
  fn a -> 
    case a do
      {key, value} -> {key, to_string(value)}
      value -> {value, to_string(value)}
    end
  end
)