Разработать ошибки отображаются дважды - PullRequest
1 голос
/ 19 июня 2011

Используя 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

Надеюсь, это кому-нибудь поможет:)

Ответы [ 2 ]

3 голосов
/ 19 июня 2011

Вы уверены, что alert не отображается нигде в вашем приложении?

Должно выглядеть примерно так

<% if flash[:alert] %>
  <p id="notice"><%= flash[:alert] %></p>
<% end %>
1 голос
/ 02 апреля 2016

Я решил проблему, удалив <p id="notice"><%= notice %></p> в моем файле index.html.erb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...