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") %>
Другие вопросы по тегам