Rails 使用 Twitter Bootstrap 设计 I18n Flash 消息

2023-11-22

你好,我是 Ruby on Rails 的新手,我正在努力理解 I18n 的 Flash 消息。我正在使用 devise、rails 4 和 twitter bootstrap。我知道 devise 仅使用flash[:notice] and flash[:alert].

我可以通过登录和注销获得适用于我的用户模型的闪存消息。但是,我无法获得注册时的闪存错误或忘记密码以正确显示。它看起来像默认的错误消息。

我查看了一堆与此相关的问题,并且对如何使用漂亮的 css 显示所有闪存消息(错误、成功、通知)感到困惑。

也许答案就在我眼皮底下的这篇文章中?Rails - 设计 - 处理 - devise_error_messages

目前我的闪存消息基于如何使用 Twitter Bootstrap Rails gem 定义 Flash 通知

这是我的例子:
within '应用程序/视图/布局/application.html.erb'

<%= render 'layouts/messages' %>

'应用程序/视图/布局/_messages.html.erb'

<% flash.each do |name, msg| %>
  <% if msg.is_a?(String) %>
    <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
      <a class="close" data-dismiss="alert">&#215;</a>
      <%= content_tag :div, msg, :id => "flash_#{name}" %>
    </div>
  <% end %>
<% end %>

如何使用自定义 CSS 显示所有 Flash 消息(错误、成功、通知)?

更新:这篇文章显示了correct我正在尝试做的事情的版本。我遇到的问题是样式看起来不一样。我相信这是因为 html 标签。

html = <<-HTML
 <div class="alert alert-error alert-block"> <button type="button"
  class="close" data-dismiss="alert">x</button>
  <h4>#{sentence}</h4>
  #{messages}
 </div>
HTML

知道如何为警报设置相同的样式吗?或者在CSS中使用什么标签?

signup error

您可以看到注册^^和登录(下面)页面之间的区别。

signin error

Update2

I've made a new post on what my problem is- which can be found here.

我在 github 上的 devise wiki 中创建了一个 wiki 页面如何:将 I18n Flash 消息与 Devise 和 Bootstrap 集成

网站的闪讯

首先我们将制作一个渲染视图以使代码简洁。之内“应用程序/视图/布局/application.html.erb”我添加了<%= render 'layouts/messages' %>.

我的文件如下所示:

<body>
  <%= render 'layouts/header' %>
  <div class="container">
    <%= render 'layouts/messages' %>
    <%= yield %>
    <%= render 'layouts/footer' %>
  </div>
</body>

接下来我们必须制作消息文件。新建一个文件在“应用程序/视图/布局/_messages.html.erb”并添加:

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>">
    <a href="#" data-dismiss="alert" class="close">×</a>
      <ul>
        <li>
          <%= value %>
        </li>
      </ul>
  </div>
<% end %>

这将为我们提供整个站点的闪现消息。

设计的闪存消息

对于设备,您需要覆盖设备处理闪存消息的方式。创建一个名为 devise_helper 的文件“应用程序/helpers/devise_helper.rb”.

在该文件内,您必须创建一个名为 devise_error_messages! 的方法,它是告诉 devise 如何处理闪存消息的文件名。

module DeviseHelper
  def devise_error_messages!
    return '' if resource.errors.empty?

    messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
    html = <<-HTML
    <div class="alert alert-error alert-block"> <button type="button"
    class="close" data-dismiss="alert">x</button>
      #{messages}
    </div>
    HTML

    html.html_safe
  end
end

接下来,在您的设计视图中,您必须定义希望错误消息出现的位置。您需要输入<%= devise_error_messages! %>在设计页面内。一个例子是在其中输入“应用程序/视图/设计/注册/.new.html.erb”(注册页面)

它应该已经在文件中,但您可以移动代码以自定义其显示位置。

Flash 消息的 CSS

如果您不想使用默认的奇怪的蓝色和黄色警报,我已将错误和警报设置为具有相同的颜色,并将成功和通知设置为具有相同的颜色。我使用红色表示错误和警报,使用绿色表示成功和通知。

在我的“应用程序/资产/样式表/custom.css.scss” I have:

/*flash*/
.alert-error {
    background-color: #f2dede;
    border-color: #eed3d7;
    color: #b94a48;
    text-align: left;
 }

.alert-alert {
    background-color: #f2dede;
    border-color: #eed3d7;
    color: #b94a48;
    text-align: left;
 }

.alert-success {
    background-color: #dff0d8;
    border-color: #d6e9c6;
    color: #468847;
    text-align: left;
 }

.alert-notice {
    background-color: #dff0d8;
    border-color: #d6e9c6;
    color: #468847;
    text-align: left;
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 使用 Twitter Bootstrap 设计 I18n Flash 消息 的相关文章

随机推荐

  • pywin32 和 Excel。写入大量数据时出现异常

    我目前正在尝试使用 pywin32 库将大量数据写入 Excel 电子表格 作为我面临的问题的一个简单示例 使用以下代码生成 1000 个单元格 x 1000 个单元格的乘法表 import win32com client from win
  • 在管道处理期间可以从 spaCy 文档中删除令牌吗?

    我正在使用 spaCy 一个很棒的 Python NLP 库 来处理许多非常大的文档 但是 我的语料库中有一些我想在文档处理管道中消除的常见单词 有没有办法从管道组件内的文档中删除令牌 spaCy 的标记化是非破坏性的 因此它始终代表原始输
  • 从项目内的 JSON 文件读取

    我有一个名为资源在我的 WPF 项目中 我有一个设置 json在该目录内 我想从该文件中读取内容 在文件设置中我有构建操作 gt 嵌入资源 and 复制到输出目录 gt 始终复制我读了这样的文件 using StreamReader r n
  • MVC3 打开视图编译后出现奇怪的错误

    我目前正在使用 Razor 开发 MVC3 项目 我已经打开视图编译 以在编译时注意拼写错误等 一旦我在项目配置文件中打开 true 就会在编译过程中出现以下错误 错误1 在应用程序级别之外使用注册为allowDefinition Mach
  • d3 Sankey - 是否有可能影响或决定节点的放置?

    我正在使用 d3 js 的 Sankey 插件 有没有办法影响节点的自动放置 如果你比较下面两张图片 自动生成桑基图 https files secureserver net 0s3DEU5s3OZtqL 我手动重新排列后 https fi
  • 使用 RNDADDDENTROPY 将熵添加到 /dev/random

    我有一个设备会产生一些噪音 我想将其添加到嵌入式 Linux 系统中 dev random 设备的熵池中 我正在读 dev random 上的手册页我不太理解您传递给 RNDADDENTROPY ioctl 调用的结构 RNDADDENTR
  • Ruby 无需 eval 即可进行评估?

    如何在不使用 eval 的情况下评估数学字符串 Example mathstring 3 3 无论如何 可以在不使用 eval 的情况下进行评估吗 也许有正则表达式的东西 您必须或者eval它 或者解析它 既然你不想eval mathstr
  • com.android.ddmlib.SyncException:是一个目录

    当我尝试使用 Android Studio 中的 运行 按钮在我的设备上运行某个应用程序时 出现以下错误 12 16 15 05 27 Launching app adb push Users me myproject app build
  • 如何构建谷歌breakpad

    我完全不知道如何构建谷歌的breakpad 有一个 sln 文件 但它依赖于一个似乎没有关联 sln 的库 它似乎使用了一种叫做 gyp 的东西 我还没弄清楚如何开始工作 我试过 python gyp breakpad src client
  • Angular 7 项目无法在 Internet Explorer 11 中运行

    我已经通过互联网完成了不同帖子中提到的所有操作 但我的问题仍然存在 我取消了 IE 9 10 11 所需的 polyfill 的注释 IE9 IE10 and IE11 requires all of the following polyf
  • 如何在 OpenLayers-3 中使用 SVG 图像作为地图标记?

    我正在尝试使用 SVG 图像在 OpenLayers 3 OL3 中创建地图 针滴 即地图标记 目前 我使用 PNG 图像作为引用 ol style Icon 源 src 属性的 pindrop 效果很好 但是 使用 SVG 图像时会失败
  • 在 C++ 中搜索并插入具有 3 个元素的映射

    我需要一张这样的地图 typedef std map
  • 在 swagger 中过滤 API 部分

    我有一个 REST API 和 springfox swagger v2 6 1 并正在运行 但现在 我不想总是显示我拥有的所有控制器 因为其中一些控制器技术性很强 不适合普通用户 但我希望能够选择我显示的内容 而无需重新编译代码 页面顶部
  • laravel Livewire 线:单击不触发该功能

    我想用 laravel livewire 做一个 SPA 我想使用wire click 来触发组件中的一个函数 但它不起作用 如果代码混乱 请原谅 这是我第一次在这里发布 我不确定要发布什么这是我的代码来解决这些问题谢谢 main blad
  • 使用 h5py 将光栅图像添加到 HDF5 文件

    如果这是一个新手问题 我很抱歉 但我对 Python 和 HDF5 相当陌生 我正在使用 h5py numpy 和 Python 2 7 我有来自各种文件的数据需要导入到一个 HDF5 文件中 每个文件的数据将存储在不同的组中 每个组都需要
  • SKView 和 SKScene 有什么区别

    来自苹果文档 SK视图 SKView 对象是显示 Sprite Kit 内容的视图 此内容由 SKScene 对象提供 SK场景 SKScene 对象代表 Sprite Kit 中的内容场景 有什么不同 SKScene 类似于视图控制器 S
  • GCM 如何使用 GCM 和第 3 方服务器取消注册设备

    我有一个使用 GCM 推送通知的应用程序 它工作正常 我的设备注册并接收推送消息 如果我从设备上卸载该应用程序 我将不再像您期望的那样收到消息 在我卸载应用程序后 您在服务器上发送消息的文本框仍然存在 这也是我所期望的 我查看了有关取消注册
  • 经典ASP超级菜鸟问题

    好的 在花了几年时间使用一种非常简单的专有语言进行编码之后 我最近进入了 Web 开发领域 我的第一份工作就是为我们的一个客户调整一个旧的经典 ASP 页面 我正在使用 Visual Studio 2008 尝试调试遇到的一些问题 但页面根
  • 如何在 Ag-Grid 中隐藏排序顺序指示器?

    我正在使用 AgGrid 和 ag grid angular 15 0 0 我的所有专栏都是可排序的 Ag grid 在每个标题中打印一个数字 指示排序顺序 如何隐藏这个 我正在使用suppressMultiSort true 因为我只想按
  • Rails 使用 Twitter Bootstrap 设计 I18n Flash 消息

    你好 我是 Ruby on Rails 的新手 我正在努力理解 I18n 的 Flash 消息 我正在使用 devise rails 4 和 twitter bootstrap 我知道 devise 仅使用flash notice and