2012-04-02 3 views
4

Я использую драгоценный камень Devise и на странице входа. Я ожидаю, что если я ничего не напишу, это должно дать мне ошибку. Сначала я думал, что я не показывал ошибку, но после того, как это сделать:Devise not fill resource.errors in sign in

<%= resource.errors.inspect %>

После этого знака в без каких-либо ценностей вообще, я получаю следующее:

#<ActiveModel::Errors:0x000000048ac1a0 @base=#<User id: nil, email: "", encrypted_password: "", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil>, @messages={}> 

Нет сообщений вообще.

Я не модифицировал модель или представление по умолчанию, так что это довольно странно, потому что при регистрации и забывании пароля я правильно получаю ошибки.

Любые мысли?

ответ

5

Сообщения об ошибках для установлены во флэш-памяти. Попробуйте добавить это в приложении макета:

<%- flash.each do |name, msg| -%> 
    <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
<%- end -%> 
0

Чуть более удобный метод <%= devise_error_messages! %> (documentation here)

+1

Это не будет работать при входе, только при регистрации. – alexcoco