devise 5:如何从 Devise 修改 Flash 消息以匹配我的 css 的 flash 消息?

devise 5: How do I modify the Flash messages from Devise to match my css for flash messages?

我 运行 我的 Rails 5.1 应用程序中的 devise 5 是最新版本。我的样式表中有以下 CSS 闪存消息代码。

div.alert.alert-danger, .alert-danger { background-color: #ff0000; }
div.alert.alert-info, .alert-info { background-color: #99d7ea; }
div.alert.alert-success, .alert-success { background-color: #a3da2f; }
div.alert.alert-warning , .alert-warning { background-color: #e6c856; }

原代码只有第一个class。它工作得很好。在阅读了一些关于此的旧答案后,我添加了第二个尝试更改设计中的 flash 消息的 css。来自 devise 的消息以我的默认字体大小和颜色显示,但背景是透明的。我希望它们与我为我的即显消息定义的内容相匹配。我发布的那些使用我定义的 CSS.

Where/how 我可以重写 CSS 的设计以匹配我的 flash 消息吗?

您可能真的想修改标记以匹配您的 Flash 消息结构。

devise_error_messages! method 定义设计错误消息的标记。您可以在 ApplicationHelper 中覆盖该方法以适应您需要的标记。

我意识到我的部分问题是我需要知道什么是设计闪存类型。从这个link我只找到两个:alert和notice。

https://github.com/rails/rails/blob/4-2-stable/actionpack/lib/action_controller/metal/flash.rb#L10

rails5中都没有用到。分别是danger、info、success和warning。我决定将 css 匹配为危险警报和成功通知。从这个 link 我找到了一个 4 年前的答案,它仍然适用于当前版本的设计。

Rails 3.1 Devise How To Change Flash Message CSS From notice to success?

我在我的样式表中添加了以下两个语句,现在来自 Devise 的所有消息看起来都像我的其他 flash 消息。

.alert-alert { @extend .alert-warning; }
.alert-notice { @extend .alert-success; }

发件人:https://github.com/heartcombo/devise/blob/master/app/helpers/devise_helper.rb

Devise 现在使用“devise/shared/error_messages”下的部分来显示 默认情况下的错误消息,并使它们更容易定制。更新你的 观看次数发生变化的电话来自:

<%= devise_error_messages! %>

至:

<%= render "devise/shared/error_messages", resource: resource %>

要开始自定义错误的显示方式,您可以复制部分 从设计到您的 app/views 文件夹。或者,您可以 运行 rails g devise:views 这会将所有这些再次复制到您的应用程序中。

如何编辑 CSS:https://github.com/heartcombo/devise/wiki/How-To:-Integrate-I18n-Flash-Messages-with-Devise-and-Bootstrap#css-for-flash-messages(Rails 4 和设计 3)