在ExAdmin中进行编辑时,使用集合定义的所有字段都会丢失其值。编辑时如何保留它们?
form vehicle do
inputs do
input vehicle, :vehicle_type, collection: Enum.map(VehicleTypeEnum.__enum_map__, fn a -> Atom.to_string(a) end)
选择和创建作品,但是当我点击编辑时,它会返回到为每个下拉列表选择车辆类型。
[更新]
问题似乎是我正在使用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集合下拉列表?将它们作为原子保持不起作用。
答案 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
)