Подтвердить что ты не робот

В чем разница при использовании flash: error,: alert и: notice?

Как спрашивает название вопроса, мне интересно узнать, есть ли разница при использовании flash[:error], flash[:alert] и flash[:notice]. Если да, то когда целесообразно использовать каждый и почему?

4b9b3361

Ответ 1

flash - это механизм Rails для сохранения некоторой информации в двух запросах. Вы устанавливаете что-то во флэш-хеше в одном запросе и получаете его в следующем запросе, который вы получаете от того же клиента.

Так как flash - это просто "хеш", вы можете использовать его как один. Это означает, что вы можете предоставить свой предпочтительный ключ (: alert/: error/: notice) и поместить любую строку сообщения в качестве значения.

Семантика того, что и когда использовать: alert/: error/: уведомление действительно зависит от вас. Сказав это, следует упомянуть общую рекомендацию: обратите внимание, когда все в порядке и отображается зеленоватым оттенком, и используйте: ошибка, когда что-то НЕ ОКАЙ и отображается красноватым оттенком. Это вполне нормально, если вы хотите использовать: предупреждение для другого типа сообщений в своем веб-приложении. Я использовал его раньше в информационных целях желтоватым оттенком.

Ответ 2

:alert и :notice функционально отличаются от других, которые вы изобретаете. FlashHash предоставляет удобства для доступа для двух: flash.alert, flash.notice. Предпочтение Rails для этих двух последующих путей сводится к redirect_to, которые будут принимать только :alert, :notice или :flash.

Тем не менее, commit в июле 2012 года в edge Rails допускает привилегию добавления других типов флэш-памяти. Здесь приведен пример добавления пользовательских типов флэш-памяти в Rails 4:

# app/controllers/application_controller.rb
class ApplicationController; add_flash_types(:error, :annoyance); end

# app/controllers/monopoly_controller.rb
class MonopolyController < ApplicationController
  def chance
    ...
    redirect_to haha_path, annoyance: "Go directly to jail. Do not pass Go. Do not collect $200."
  end
end

# app/views/haha/index.html.erb
<%= annoyance %>

Ответ 3

это просто классификация. он генерирует div # error.error или div # notice.notice вы подключаете логику, которую вы хотите выше

litte sample:

.alert, .error, .notice, .success { padding:.8em 0; margin:0 0 2px 0; border:2px solid #ddd; font-size:1.6em; text-align:center;}

.error { background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4; }
.notice { background:#FFF6BF;color:#514721;border-color:#FFD324; }
.success { background:#DDFCD5;color:#000;border-color:#44A815; }
.alert { background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4; }

.error a {color:#8a1f11;}
.notice a {color:#514721;}
.success a {color:#264409;}
.alert a {color:#8a1f11;}

Ответ 4

Это просто разные классификации. В основном я использую :error и :notice. Заметьте, что я использую для информационных сообщений ( "ваш пароль был изменен", "сохранены изменения" и т.д.). Я оставляю :error для критических вещей/проблем ( "Ваши пароли не совпадают", "Ошибка входа" и т.д.)

Ответ 5

Я также использую класс :message, который также проходит по сообщению StandardError, помещенному в мои обработчики исключений. Использование 2 или 3 классов позволяет отображать до нескольких сообщений в ответ на одно событие или результат, каждый из которых передает другой аспект результата, например. информационный, ошибка, основанная на том, что знает приложение, и ошибка, основанная на том, что система знает.