Ho un elenco di parole chiave degli errori Ecto changeset Vorrei convertirmi in una mappa in modo che il parser JSON Poison possa pubblicare correttamente un elenco di errori di convalida nel formato JSON.Elixir: come convertire un elenco di parole chiave in una mappa?
in modo da ottenere un elenco di errori nel modo seguente:
[:topic_id, "can't be blank", :created_by, "can't be blank"]
... e mi piacerebbe ottenere una mappa degli errori in questo modo:
%{topic_id: "can't be blank", created_by: "can't be blank"}
In alternativa, se potessi convertirlo in una lista di stringhe, potrei usare anche quello.
Il modo migliore per eseguire una di queste attività?
non posso provarlo in questo momento, ma ho la sensazione che si dovrebbe essere in grado di ridurre l'ultimo esempio di '[...] | > Enum.chunk (2) |> Enum.into (% {}) ' –
Ah, ho perso la differenza tra un elenco e un elenco di parole chiave. Grazie! –
Anche io sto avendo lo stesso problema di OP, solo credo che Modifiche abbia cambiato la sua implementazione. ATOW gli errori del changeset _è_ un elenco di parole chiave, ad es. '[campo_1: {" non valido ", [tipo: Ecto.UUID]}, campo_2: {" non può essere vuoto ", []}]'. Sono stato in grado di convertire in una mappa usando l'approccio 'Enum.into' di questa risposta con' error_map = Enum.into (changeset.errors,% {}) '. Come mappa, potrei quindi ottenere il mio messaggio con '{err_msg, _type} = Map.fetch! (Error_map,: field_1)'. – ibgib