Rails 3.1和Devise 1.5问题。
我正在使用以下代码在我的布局中显示Flash消息:
<% flash.each do |key, message| %>
<%= content_tag(:div, message, :class => "flash #{key}") %>
<% end %>
我想将一些确认消息的css类从通知改为成功,但我不知道在哪里覆盖或更改密钥,因为我不知道它在哪里设置。
有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:1)
所以这样做的方法是编辑设计控制器。
当您通过正常安装安装Devise时,我认为它不会安装控制器(至少它不适合我)。
首先,您应该手动添加控制器文件并将它们放在同一位置的项目中:https://github.com/plataformatec/devise/tree/master/app/controllers/devise
项目中有文件后,请转到“sessions_controller.rb”文件。
一行16&amp; 25,你应该看到代码:
set_flash_message :notice, :signed_in
和
set_flash_message :notice, :signed_out
您只需将“:notice”更改为“:success”
即可希望有效!
答案 1 :(得分:0)
css类由:class
参数设置。要添加notice
(或success
等)类,只需将您的通话更改为以下内容:
<%= content_tag(:div, message, :class => "flash #{key} notice") %>
答案 2 :(得分:0)
我遇到了这个问题因为我正在使用bootstrap-sass gem,它使用了一个完全不同的类结构来处理flash消息。我采用了解决这个问题的方法,而不是简单地设计(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的flash消息正常工作:
/* Style Devise Flash messages like Bootstrap */
.alert-alert {
@extend .alert-warning;
}
就是这样!现在flash[:alert]
的样式就像bootstrap的flash[:warning]
。