diff options
| author | Melonai <einebeere@gmail.com> | 2021-05-07 17:11:50 +0200 |
|---|---|---|
| committer | Melonai <einebeere@gmail.com> | 2021-05-07 17:11:50 +0200 |
| commit | 88c0fbf10145ddd4ccd10ee432b4ca1aadd96a91 (patch) | |
| tree | 33691a532f460dbdf8a0e7909b898c0b324eaa2f /lib/rook_web/views/error_helpers.ex | |
| download | rook-88c0fbf10145ddd4ccd10ee432b4ca1aadd96a91.tar.zst rook-88c0fbf10145ddd4ccd10ee432b4ca1aadd96a91.zip | |
Initial structure
Diffstat (limited to 'lib/rook_web/views/error_helpers.ex')
| -rw-r--r-- | lib/rook_web/views/error_helpers.ex | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/rook_web/views/error_helpers.ex b/lib/rook_web/views/error_helpers.ex new file mode 100644 index 0000000..a905b5e --- /dev/null +++ b/lib/rook_web/views/error_helpers.ex @@ -0,0 +1,30 @@ +defmodule RookWeb.ErrorHelpers do + @moduledoc """ + Conveniences for translating and building error messages. + """ + + use Phoenix.HTML + + @doc """ + Generates tag for inlined form input errors. + """ + def error_tag(form, field) do + Enum.map(Keyword.get_values(form.errors, field), fn error -> + content_tag(:span, translate_error(error), + class: "invalid-feedback", + phx_feedback_for: input_name(form, field) + ) + end) + end + + @doc """ + Translates an error message. + """ + def translate_error({msg, opts}) do + # Because the error messages we show in our forms and APIs + # are defined inside Ecto, we need to translate them dynamically. + Enum.reduce(opts, msg, fn {key, value}, acc -> + String.replace(acc, "%{#{key}}", to_string(value)) + end) + end +end |
