2016-05-15 59 views
5

我想在不特定于某个字段的Ecto.Changeset上设置错误。如何将全局错误添加到Ecto更改集

在我的情况下,我有一个登录表单,我想设置一个错误,说明电子邮件或密码无效。但是,我仍然想在空白处突出显示emailpassword字段。

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

回答

10

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") 
+0

我不得不将它更改为'<%= error_tag @changeset,:base%> – flp

相关问题