Rails 3.1 Придумайте, как изменить CSS флеш-сообщения От уведомления к успеху?
Rails 3.1 и Devise 1.5 вопрос.
Я использую следующий код для отображения флэш-сообщений в моем макете:
<% flash.each do |key, message| %>
<%= content_tag(:div, message, :class => "flash #{key}") %>
<% end %>
Я хотел бы изменить класс css для некоторых моих подтверждающих сообщений с уведомления на успех, но я не знаю, где переопределить или изменить ключ, потому что я не знаю, где он установлен.
Кто-нибудь может указать мне правильное направление?
Спасибо!
3 ответа
Поэтому способ сделать это - отредактировать контроллеры устройства.
Когда вы устанавливаете Devise через обычную установку, я не думаю, что он устанавливает контроллеры (по крайней мере, для меня).
Итак, сначала вы должны вручную добавить файлы контроллера и поместить их в ваш проект в том же месте: https://github.com/plataformatec/devise/tree/master/app/controllers/devise
Как только у вас появятся файлы в вашем проекте, перейдите к файлу "session_controller.rb".
В одной строке 16 и 25 вы должны увидеть код:
set_flash_message :notice, :signed_in
а также
set_flash_message :notice, :signed_out
Вам просто нужно изменить ": уведомление" на ": успех"
Надеюсь, что это работает!
Я столкнулся с этой проблемой, потому что я использую гем bootstrap-sass, который использует совершенно другую структуру классов для флеш-сообщений. Я пошел по пути решения этой проблемы с помощью sass, а не возился с разработкой вообще (наследование sass - это круто:).
Итак, я рендерим флеш-сообщения в app/view/layouts/application.html.haml
:
%div.container
- flash.each do |key, value|
= content_tag(:div, value, class: "alert alert-dismisable alert-#{key}")
И я добавляю простое правило к app/assets/stylesheets/custom.css.scss
заставить работать флеш-сообщения Devise:
/* Style Devise Flash messages like Bootstrap */
.alert-alert {
@extend .alert-warning;
}
Это оно! сейчас flash[:alert]
стилизован как бутстрап flash[:warning]
,
Класс CSS устанавливается :class
аргумент. Добавить класс notice
(или же success
и т. д.), просто измените свой вызов на следующее:
<%= content_tag(:div, message, :class => "flash #{key} notice") %>