2016-05-15 56 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

相關問題