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 消息 的相关文章

  • 在 Bootstrap 中使单击的选项卡处于活动状态

    我正在使用 Django 并将 Bootstrap 与 Django 集成 这是我的导航栏 HTML 代码 div class navbar navbar default navbar fixed top div class contain
  • 如何确定当前使用哪个网格选项

    我将 Bootstrap 3 用于使用 PHP 和 HTML 创建的网页 随着响应式网格和类的开启引导程序3您可以将多个类分配给一个 div 以根据当前屏幕尺寸定义不同的宽度 例如 div class col lg 3 col md 3 c
  • 从父应用程序重新打开 Rails 3 引擎类

    就目前而言 您无法重新打开引擎中包含的引擎类 app只需在父应用程序的目录中添加相同的类即可 app目录 例如 my engine app controllers users controller rb my app app control
  • 将 Bootstrap 与 Bower 一起使用

    我正在尝试将 Bootstrap 与 Bower 一起使用 但由于它克隆了整个存储库 因此没有 CSS 和其他内容 这是否意味着我需要在我自己的构建过程中包含构建 Bootstrap 或者如果我错了 正确的工作流程是什么 I finally
  • 如何在 Capybara 中 POST 到 URL?

    刚刚从 Cucumber Webrat 切换到 Cucumber Capybara 我想知道如何将内容 POST 到 Capybara 中的 URL 在 Cucumber Webrat 中我能够执行以下步骤 When I send to d
  • 当按钮处于加载状态时,如何向按钮添加微调器图标?

    Twitter 引导按钮 http getbootstrap com javascript buttons有一个很好的Loading 状态可用 问题是它只显示一条消息 例如Loading 通过了data loading text像这样的属性
  • 在 Sinatra 中运行后台进程

    我有 Sinatra Rails 应用程序和一个启动一些漫长过程的操作 通常我会为后台作业排队 但这种情况太简单了 后台进程很少启动 所以队列是一个开销 那么如何在没有队列的情况下运行后台进程呢 get build logs project
  • 将查询字符串参数作为表单发布的一部分发送

    有没有办法捕获查询字符串并将其作为表单帖子的一部分发送 我正在使用 Rails 2 3 5 我的用户所在的页面有多个查询字符串参数 在此页面上 他们将提交一份表格 在接收帖子的操作中 我想知道这些查询字符串参数是什么 显然 它们不是作为邮件
  • 高效地重新安排 ActiveJob (resque/sidekiq)

    我正在玩Rails 4 2应用程序使用ActiveJob受支持resque sidekiq用于电子邮件安排 当用户创建时事通讯活动时 会创建一个新作业并安排在特定日期 这一切都很好 但是当用户更改交货日期时会发生什么 在这种情况下 每个作业
  • PHP 的脚手架 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 PHP 中有什么东西可以像 Rails 一样创建基本的脚手架吗 编辑 我需要一些东西来快速原型化 一些框架比如Symfony http www sym
  • Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题

    我在使用 UTF 8 字符时遇到一些问题 这是 db seeds rb User create username eml first name last name ck email email protected cdn cgi l ema
  • Ruby on Rails - 运行 Cucumber 时出错:您已经激活了 activesupport 3.2.1,但您的 Gemfile 需要 activesupport 3.1.0。

    我知道这个问题之前已经以一种或另一种形式被问过 但我仍然无法为此找到可行的解决方案 我正在学习在线提供的 saas 课程 代码是直接从https github com saasbook hw3 rottenpotatoes https gi
  • Travis-CI 上的 Rails 数据库设置

    我正在尝试在 Rails 项目上使用 Travis 持续集成 文档说 对于 SQLite3 测试数据库必须配置如下 test adapter sqlite3 database memory timeout 500 但我想保留本地测试的默认配
  • 引导标签输入宽度

    我正在尝试使用引导程序标签输入 http timschlechter github io bootstrap tagsinput examples 以模态中包含的形式 像这样 div class form group div
  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • 使用 AJAX 和 JQuery 按设定的时间间隔刷新 Rails 部分

    I have a page in my rails application that looks like 现在 我有另一个用 python 编码的人工智能应用程序 它处理视频 显示在 Rails 应用程序页面的左侧 并使用捕获的车辆及其相
  • Ruby on Rails 两个同时创建两个不同控制器的操作

    我有一个线程控制器和消息控制器 线程 has many 消息 用户单击发送后 我将数据发送到线程控制器以创建线程 我想做到这一点 线程控制器 rb def create if thread save send data into messa
  • Rails 的多个数据库不适用于远程数据库

    我有一个远程只读 postgres 数据库 它是通过 docker 实例维护的卡尔达诺数据库同步 https github com input output hk cardano db sync 我设法将开发数据库连接到它 它工作正常 但由
  • 将对象转换为哈希,然后将其保存到用户的列

    找不到任何接近我想做的事情 我想将一个对象存储到用户的列中 该列采用数组的形式 postgres def change add column users interest string array true default end 我有另一
  • Rails 6:每个用户只能创建一个配置文件

    我目前正在开发 Rails 6 应用程序 我有以下关联 用户有一个配置文件 并且配置文件属于用户 当编辑用户的配置文件时 我最终为该用户提供了两个配置文件 我希望每个用户只有一份个人资料 编辑表单 profile edit html erb

随机推荐

  • 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