Rails flash警告消息只会在登录页面关闭



我主要是想让其余的应用程序页面自动关闭显示的flash消息。它只发生在它自己正确关闭的登录页面上。其余的flash警报不需要通过click关闭。

也许是一些与设计的互动导致了这个问题?

Rails 4。x, Ruby 2。x,设计>

<body>
  <%= render partial: 'layouts/navigation' %>
  <% flash.each do |name, msg| %>
  <% if msg.is_a?(String) %>
    <div class="row" style="max-width:500px;">
      <div data-alert class="alert-box info round <%= name.to_s == 'notice' ? 'success' : 'alert' %>">
        <h3><%= content_tag :div, msg %>
        <a href="#" class="close">&times;</a></h3>
      </div>
    </div>
  <% end %>
  <% end %>
  <%= yield %>
  <%= javascript_include_tag "application" %>
  </body>
在application.js

$(document).ready(function () {
  $(".alert").delay(1000).fadeOut(3000);

只有当有alert时才会淡出。如果有flashnotice呢?使用这两种方法,淡出都不会发生,因为类将不存在。

根据显示的消息类型设置类。

<%= name.to_s == 'notice' ? 'success' : 'alert' %>  

所以只有当它是一个警告时,它才会淡出。

尝试用类message将整个东西包围在div中。

<body>
<%= render partial: 'layouts/navigation' %>
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
  <div class="row" style="max-width:500px;">
    <div class="message">
      <div data-alert class="alert-box info round <%= name.to_s == 'notice' ? 'success' : 'alert' %>">
        <h3><%= content_tag :div, msg %>
        <a href="#" class="close">&times;</a></h3>
      </div>
    </div>
  </div>
<% end %>

然后把你的javascript改成:

$(document).ready(function () {
  $(".message").delay(1000).fadeOut(3000);  

这将使任何带有类消息的内容淡出,并且不管里面的内容是否有alert、flash或notice类。他们都会做同样的事情。

最新更新