Rails 4, Devise - Login error messages do not work

Part of github code: http://bit.ly/ZMSJXQ

1) When I log in, I get error messages if:

  • email does not exist in db
  • password is empty.
  • Incorrect password

devise_error_messages! empty because resource.errors empty. It seems that the resource is not being checked. Why?


2) If I ran resource.valid? , then resource.errors returns :email=>["has already been taken"], :password=>["can't be blank"]

I get error messages, but they are incorrect. "Email already done" does not make sense when logging in. Why?

(Register, reset password, etc. work fine.)

+6
source share
1 answer

devise_error_messages! is only an assistant to return a formatted list of resource.errors . However, some failure error messages are set in the rail flash object. Somewhere in your layout you should display these flash messages:

 <%- flash.each do |name, msg| -%> <%= content_tag :div, msg, id: "flash_#{name}" %> <%- end -%> 
+10
source

Source: https://habr.com/ru/post/977209/


All Articles