设计Flash方法Rails [重复]

2023-11-21

我正在使用 Rails 4、Twitter Bootstrap 3.0 和 Devise 3.0。我正在尝试为设备和网站的其余部分获取外观相同的闪存消息。到目前为止我有这个:

Within “应用程序/视图/布局/application.html.erb”:

<%= render 'layouts/messages' %>

“应用程序/视图/布局/_messages.html.erb”:

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

我创建了一个“应用程序/helpers/devise_helper.rb”为了覆盖默认的设备错误消息:

module DeviseHelper
  def devise_error_messages!
  end
end

“应用程序/helpers/application_helper.rb”:

def devise_flash
  if controller.devise_controller? && resource.errors.any?
    flash.now[:error] = flash[:error].to_a.concat resource.errors.full_messages
    flash.now[:error].uniq!
  end
end

“应用程序/资产/样式表/custom.css.scss”:

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

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

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

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

It displays normal flash messages fine but the issue is when I have a devise error. It looks like this: enter image description here

I am trying to list the errors more like this: enter image description here

我不希望错误被“”包围。它不需要有项目符号,但我希望它垂直列出。我想我需要编辑我的 devise_flash 方法“应用程序/helpers/application_helper.rb” file.

我怎样才能做到这一点?


我在 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(使用前将#替换为@)

设计Flash方法Rails [重复] 的相关文章

随机推荐

  • 标签位置应固定在右侧并向左增长

    即使标签长度不同 如何将标签设置为右侧对齐 我有一组标签 它们彼此相邻 也彼此下方 现在的问题是它们总是从标签行的左侧对齐 但我需要它们在右侧对齐 因为它们显示其他行的总和 只是为了验证我不是在谈论文本对齐 我正在寻找一种对齐标签的解决方案
  • 单击取消按钮 showInputDialog

    我有一个关于按输入对话框的取消按钮的问题 我以前曾问过类似的问题 所以如果我似乎重复了自己的话 我深表歉意 我遇到的主要问题是 无论我按下取消键 我的代码都会执行 并且即使我不添加任何输入 也会建立套接字连接 为什么会发生这种情况以及如何避
  • Xcode 5 和phonegap:为设备构建链接器错误,但不为模拟器构建链接器错误

    我们的phonegap应用程序对于iPhone模拟器构建得很好 但在iPhone上构建应用程序时会生成链接器错误 唯一改变的是安装 testflight 和测试应用程序 我们已经删除了 testflight 和测试应用程序 但链接器错误仍然
  • Apache Shiro 和 SSO

    Apache Shiro 是一个 Java 安全框架 支持 SSO 我有多个子域 每个子域都有单独的应用程序运行 我如何使用 Apache Shiro Web 过滤器 或任何其他过滤器 来提供单点登录 在使用 Apache Shiro 之前
  • 在 Oracle SQL 中删除表

    每当我尝试删除表或创建表时 它都会显示以下错误 DROP TABLE SUBURB DROP TABLE STOCKITEM DROP TABLE MANUFACTURER DROP TABLE WAREHOUSE DROP TABLE C
  • 重写规则以仅检测数字

    我正在尝试创建一个重写规则 该规则将仅检测数字并相应地转发它们 我希望如果出现除数字以外的任何内容 则忽略重写规则 index php OK OK 42365 重写为view php id 42365 到目前为止我所拥有的 RewriteE
  • 我正在做正确的事情将分贝从 -120 - 0 转换为 0 - 120

    我想测量周围的音量 不太确定我做的是否正确 我想创建一个范围从 0 安静 到 120 非常吵闹 的 VU 表 我得到了峰值功率和平均功率 但在正常安静环境中非常高 请给我一些指示 void viewDidLoad super viewDid
  • 如何最好地消毒 ruby​​ on Rails 中的字段

    我目前有一个控制器从前端的 TinyMCE 捕获一些 html 如果我修补萤火虫 就可以提交脚本标签并将警报消息等注入到屏幕上 编辑 目前我正在使用清理助手在模型中修复此问题 require action view class NotesC
  • 按组有条件 NA 填充

    edit这个问题最初是问的data table 任何包的解决方案都会很有趣 我对一个更普遍的问题的特定变体有点困惑 我有与 data table 一起使用的面板数据 我想使用 data table 的分组功能来填充一些缺失的值 不幸的是它们
  • Python 中的整数到十六进制转换

    a 1 print hex a 上面给了我输出 0x1 我如何获得输出0x01反而 您可以使用format gt gt gt a 1 gt gt gt 0 02x format a 01 gt gt gt 0x 0 02x format a
  • 多线程:我需要在只读方法中保护我的变量吗?

    我对使用锁来保护我的共享数据结构有几个疑问 我正在使用 C C ObjC Objc 例如我有一个在多线程环境中使用的计数器类 class MyCounter private int counter std mutex m public in
  • 来回改变风格

    Code p class demo my text p
  • 如何从PHP中的路径找到图像的扩展名?

    PHP 中是否有任何标准函数可以从相应的文件路径中仅查找图像的扩展名 例如 如果我的图像路径类似于 testdir dir2 image gif 则该函数应返回 gif Thanks ext pathinfo parse url testd
  • Android VirtualBox 共享文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我已经在 VirtualBox 中安装了 Android x86 我从我的主机共享了一个文件夹 该文件夹是 Windows 7 for Virtual Android Machine
  • Angular.Service 与 Angular.Factory

    我都看过角度工厂 and 角度 service 用于声明服务 但是 我找不到 angular service官方文档中的任何地方 这两种方法有什么区别 哪个应该用于什么 假设它们做不同的事情 angular service myServic
  • 与 classList.add 和 getElementsByClassName 作斗争[重复]

    这个问题在这里已经有答案了 我正在尝试向具有特定类 输入字段集 的某些元素添加额外的类 fieldset class input fieldset fieldset fieldset class input fieldset fieldse
  • 从 Jenkins 中的 pom 文件自动派生强制 SonarQube 属性

    情况 我想使用 Jenkins 1 642 4 触发的 SonarQube 5 4 来分析我的项目 这是一个用maven构建的java项目 我看到有两种触发分析的方法 构建后操作 使用 Maven 进行 SonarQube 分析 但它是已弃
  • lodash流函数应该如何在typescript中输入?

    lodash flow结合了两个或多个功能 lodash flow double addTwo 将返回一个函数 该函数将加倍并添加两个 这个函数应该如何在打字稿中输入 当前定义只返回 Function declare function fl
  • jQuery:按键退格键不会触发?

    我想知道我做错了什么 s keypress function e switch e keyCode case 8 Backspace console log backspace case 9 Tab case 13 Enter case 3
  • 设计Flash方法Rails [重复]

    这个问题在这里已经有答案了 我正在使用 Rails 4 Twitter Bootstrap 3 0 和 Devise 3 0 我正在尝试为设备和网站的其余部分获取外观相同的闪存消息 到目前为止我有这个 Within 应用程序 视图 布局 a