Rails 3.1设计如何更改Flash消息CSS从通知到成功?

时间:2011-12-05 14:51:18

标签: ruby-on-rails-3.1 devise

Rails 3.1和Devise 1.5问题。

我正在使用以下代码在我的布局中显示Flash消息:

    <% flash.each do |key, message| %>
      <%= content_tag(:div, message, :class => "flash #{key}") %>
    <% end %>

我想将一些确认消息的css类从通知改为成功,但我不知道在哪里覆盖或更改密钥,因为我不知道它在哪里设置。

有人能指出我正确的方向吗?

谢谢!

3 个答案:

答案 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

中渲染flash消息
%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]