Используя Devise для авторизации, я настроил авторизацию по электронной почте или через логин.
Проверяемый драйвер удален. Я написал валид в моей пользовательской модели.
Также я перезаписываю devise helper в app / helpers / devise_helper.rb:
module DeviseHelper
def devise_error_messages!
return "" if resource.errors.empty?
errors = Array.new
resource.errors.each do |field, msg|
errors.push(msg)
end
flash[:alert] = errors
end
end
В поле зрения (devise / registrations / new.html.erb) я заменяю
<%= devise_error_messages! %>
до
<% devise_error_messages! %>
Итак, проблема.
Когда поля пусты (или еще), отображаются ошибки флэш-памяти. Затем я иду на главную страницу, и ошибки снова отображаются. Появляется только в интерфейсе регистрации. Когда авторизация, то все в порядке.
Пожалуйста, помогите.
Обновлены.
частичное представление (_block_errors.html.erb):
<% flash.each do |name, msg| %>
<% if msg.class == Array %>
<% msg.each do |message| %>
<%= content_tag :p, message, :class => "#{name}" %>
<% end %>
<% else %>
<%= content_tag :p, msg, :class => "#{name}" %>
<% end %>
<% end %>
В макете это называется как:
<%= render 'layouts/block_errors' %>
Решено!
В перегруженном методе devise_error_messages! необходимо заменить строку:
flash[:alert] = errors
до
flash.now[:alert] = errors
Надеюсь, это кому-нибудь поможет:)