Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4, Devise - Error messages on Login aren't working properply

Piece of code on github: http://bit.ly/ZMSJXQ

1) On Login, I get no error messages if:

  • email doesn't exist in db
  • password is empty
  • password is wrong

devise_error_messages! is empty as resource.errors is empty. Looks like resource doesn't get validated. Why?


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

I get error messages but they're not correct. 'Email has already been taken' doesn't make sense on log in. Why?

(Sign up, Reset password etc. work fine.)

like image 506
Webspirit Avatar asked Oct 25 '14 00:10

Webspirit


1 Answers

devise_error_messages! is only a helper to return a formatted list of resource.errors. Some devise failure messages are set in rails's flash object though. Somewhere in your layout you should render those flash messages:

<%- flash.each do |name, msg| -%>
  <%= content_tag :div, msg, id: "flash_#{name}" %>
<%- end -%>
like image 183
wnm Avatar answered Sep 19 '22 10:09

wnm