Skip to content

Commit 7ca91ec

Browse files
Fix error message from changeset showed in form
1 parent 7771985 commit 7ca91ec

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

lib/kaffy/resource_form.ex

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -327,17 +327,28 @@ defmodule Kaffy.ResourceForm do
327327
end
328328
end
329329

330-
def get_field_error(form, field) do
331-
case Keyword.get_values(form.errors, field) do
332-
[{msg, _}] ->
333-
error_msg = Kaffy.ResourceAdmin.humanize_term(field) <> " " <> msg <> "!"
334-
{error_msg, "is-invalid"}
335-
336-
_ ->
330+
def get_field_error(changeset, field) do
331+
changeset
332+
|> build_error_messages()
333+
|> Map.get(field)
334+
|> case do
335+
nil ->
337336
{nil, ""}
337+
338+
messages ->
339+
error_msg = Kaffy.ResourceAdmin.humanize_term(field) <> " " <> Enum.join(messages, ", ") <> "!"
340+
{error_msg, "is-invalid"}
338341
end
339342
end
340343

344+
defp build_error_messages(changeset) do
345+
Ecto.Changeset.traverse_errors(changeset, fn {msg, opts} ->
346+
Enum.reduce(opts, msg, fn {key, value}, acc ->
347+
String.replace(acc, "%{#{key}}", to_string(value))
348+
end)
349+
end)
350+
end
351+
341352
def kaffy_input(conn, changeset, form, field, options) do
342353
ft = Kaffy.ResourceSchema.field_type(changeset.data.__struct__, field)
343354

@@ -346,7 +357,7 @@ defmodule Kaffy.ResourceForm do
346357
ft.render_form(conn, changeset, form, field, options)
347358

348359
false ->
349-
{error_msg, error_class} = get_field_error(form, field)
360+
{error_msg, error_class} = get_field_error(changeset, field)
350361
help_text = form_help_text({field, options})
351362

352363
content_tag :div, class: "form-group #{error_class}" do

0 commit comments

Comments
 (0)