【问题标题】:How to add a global error to an Ecto Changeset如何将全局错误添加到 Ecto Changeset
【发布时间】:2023-03-28 07:50:01
【问题描述】:

我想在不特定于某个字段的 Ecto.Changeset 上设置错误。

就我而言,我有一个登录表单,我想设置一个错误,说明电子邮件或密码无效。但是,当它们为空时,我仍然想突出显示 emailpassword 字段。

在 Rails 中,您可以通过向 errors[:base] 添加一个条目来做到这一点。 Ecto 中是否有等价物?

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    Ecto.Changeset.add_error 允许您传递任何原子作为键,它不必是该模型的字段。您可以像这样将错误添加到:base

    add_error(changeset, :base, "email or password is invalid")
    

    然后在您的模板中执行以下操作:

    <%= error_tag f, :base %>
    

    或(检查是否有错误后):

    <%= @changeset.errors[:base] %>
    

    您的用例的另一个选项是在 :email:password 上添加错误

    changeset
    |> add_error(:email, "email or password is invalid")
    |> add_error(:password, "email or password is invalid")
    

    【讨论】:

    • 我不得不把它改成 `
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多