我主要是想让其余的应用程序页面自动关闭显示的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">×</a></h3>
</div>
</div>
<% end %>
<% end %>
<%= yield %>
<%= javascript_include_tag "application" %>
</body>
在application.js $(document).ready(function () {
$(".alert").delay(1000).fadeOut(3000);
只有当有alert
时才会淡出。如果有flash
或notice
呢?使用这两种方法,淡出都不会发生,因为类将不存在。
根据显示的消息类型设置类。
<%= 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">×</a></h3>
</div>
</div>
</div>
<% end %>
然后把你的javascript改成:
$(document).ready(function () {
$(".message").delay(1000).fadeOut(3000);
这将使任何带有类消息的内容淡出,并且不管里面的内容是否有alert、flash或notice类。他们都会做同样的事情。