Ruby on rails Rails/Bootstrap-Flash通知:成功现在是红色而不是绿色?

Ruby on rails Rails/Bootstrap-Flash通知:成功现在是红色而不是绿色?,ruby-on-rails,ruby,ruby-on-rails-3,twitter-bootstrap,flash,Ruby On Rails,Ruby,Ruby On Rails 3,Twitter Bootstrap,Flash,我一直试图在这里寻找答案,但我找不到任何有效的答案。我已经在我的rails应用程序中实现了:success和:danger flash通知。它工作得非常好,例如:success是绿色的,danger是红色的,有一个关闭按钮等等,但是自从添加了一些mailer文件之后,我的:success现在显示为红色 application.html.erb摘录: <body> <div class="container"> <% flash.each do |key

我一直试图在这里寻找答案,但我找不到任何有效的答案。我已经在我的rails应用程序中实现了:success和:danger flash通知。它工作得非常好,例如:success是绿色的,danger是红色的,有一个关闭按钮等等,但是自从添加了一些mailer文件之后,我的:success现在显示为红色

application.html.erb摘录:

<body>

  <div class="container">
    <% flash.each do |key, value| %>
      <%= content_tag :div, class: "alert alert-#{key == 'notice ? 'success' : 'danger'}" do %>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <%= value %>
      <% end %>
    <% end %>

    <%= yield %>
  </div>

</body>

&时代;
联系_mailer.rb

class ContactMailer < ActionMailer::Base
  default to: 'justindavidson23@gmail.com'

  def contact_email(name, phone, email, event_type, body)
    @name = name
    @phone = phone
    @email = email
    @event = event_type
    @body = body

    mail(from: email, subject: 'Contact Form Message').deliver
  end
end
class ContactMailer
联系人\u controller.rb

class ContactsController < ApplicationController
  def new
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(contact_params)
    if @contact.save
      name = params[:contact][:name]
      phone = params[:contact][:phone]
      email = params[:contact][:email]
      event = params[:contact][:event_type]
      body = params[:contact][:comments]

      ContactMailer.contact_email(name, phone, email, event, body).deliver
      flash[:success] = 'Message Sent.'
      redirect_to new_contact_path
    else
      flash[:danger] = 'Error occurred, messgage not sent.'
      redirect_to new_contact_path
    end
  end
end

private
def contact_params
  params.require(:contact).permit(:name, :phone, :email, :event_type, :comments)
end
class contacts控制器
和,联系_email.html.erb

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <p>New Message from Hoot and Holla's Contact form, from <%= "#{@name}, #{@email}" %></p>
    <p><%= @phone %></p>
    <p><%= @event %></p>
    <p><%= @body %></p>
  </body>
</html>

来自Hoot和Holla联系表的新消息,来自


我再说一遍,在邮递员进来之前,一切都很顺利……但现在我只是感到困惑。请帮忙

在您的flash循环中,您仅在那里检查flash[:注意]。如果有flash[:notice],您将应用
警报成功
。除非应用了
警告危险
。所以,我在这里改变了什么。我正在为
flash[:success]
flash[:notice]
应用
alert success
。所以 Do in_flash.html.erb-

  <%= content_tag :div, class: "alert alert-#{['success','notice'].include?(key) ? 'success' : 'danger'}" do %>

在应用程序布局中尝试此代码

<div id="wrapper">
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<% flash.each do |name, msg| %>
 <%= content_tag(:div, msg, :id=>"#{name}", :class `enter code here`=>"alert alert-  info") %>
<%end%>
</div>
</div>
</div>
</div>

<script type="text/javascript">
window.setTimeout(function() 
{
$("#notice").fadeTo(500, 0).slideUp(500, function()
{
$(this).remove();
});
}, 5000);
</script>
<%= yield%>

“#{name}”,类`在此处输入代码`=>“警报-警报-信息”)%>
setTimeout(函数()
{
$(“#注意”).fadeTo(500,0).slideUp(500,function()
{
$(this.remove();
});
}, 5000);

哦,非常感谢@AmitSuroliya!!这已经非常有效了!!我正在试图弄清楚代码中到底发生了什么…我不认为你能简单解释一下为什么会这样做,你能吗??…如果不能的话,无论如何谢谢你!!我非常感激:)

贾斯汀


PS适用于有相同问题的人阅读此内容…解决方案是将其复制并粘贴到我的application.html.erb文件中,并替换我的内容标记行…而不是创建一个名为_flash.html.erb的部分。以防万一有人对此感到困惑:)

有时你会想使用更多的内容
注意
成功
,如
信息
危险
警告

以下是我建议的解决方案:

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %> alert-dismissible" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <%= value %>
   </div>
<% end %>

因为我之前对mailer回调的评论更多的是旁注,与这个问题无关,所以我为你做了一个回答。

你使用什么浏览器?你使用的是引导sass gem吗?顺便说一句,你应该把那个邮递员放回电话。嗨,贾斯汀,是的,谢谢你的提示!!。。那会把它清理干净的!!欢迎贾斯汀……在你的
flash
循环中,你只在那里检查flash[:注意]。如果有flash[:notice],您将成功应用警报。除非应用了
警告危险
。所以,我在这里改变了什么。我正在为'flash[:success]和flash[:notice]应用
alert success
。哦,太棒了@JustinLicata!太干净了!(并简化)。谢谢你花时间做这件事,真的很感激<代码>
添加角色属性以帮助屏幕阅读器。这个解释太好了@JustinLicata。这很容易理解。请解释一下。
.alert-alert {
  @extend .alert-danger;
}

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