让flash消息在rails中的同一页面中消失

uni*_*lar 2 jquery ruby-on-rails twitter-bootstrap

几秒后我想让flash消息消失.所以我使用这些代码:

$(function() {
  $('.alert').slideUp(1500);
});
Run Code Online (Sandbox Code Playgroud)

.alert是我添​​加到flash消息的引导类.

我的应用程序只通过omniauth实现了用户登录/注销功能.(使用facebook和google plus)最后列出的登录/注销代码.

当我登录时,flash消息就像我想象的那样消失了.但是当我退出时,闪光灯并没有消失.

但是,如果我使用这些代码,此功能将正常工作.(但与我想要的略有不同)

$(function() {
  setInterval(function(){
    $('.alert').slideUp(500);
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

登录/退出代码:

class SessionsController < ApplicationController
  def create
    auth_data = request.env['omniauth.auth']
    auth = Authorization.find_by( provider: auth_data['provider'], uid: auth_data['uid'] ) 
    user = auth.nil? ? User.create_with_omniauth(auth_data) : auth.user
    session[:user_id] = user.id
    if !user.email
      redirect_to edit_user_path(user), :alert => "Please enter your email address."
    else
      redirect_to root_url, :notice => "Signed in!"
    end
  end

  def destroy
    reset_session
    redirect_to root_url, :notice => "Signed out!"
  end

  def new
  end

  def failure
    redirect_to root_url, :alert => "Authentication error: #{params[:message].humanize}"
  end
end
Run Code Online (Sandbox Code Playgroud)

Boo*_*jan 7

试试这个

$(function() {
  setTimeout(function(){
    $('.alert').slideUp(500);
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)