0

我有以下代码application.js来淡出 Flash 消息:

//fadeout flash messages
$('.flash').fadeIn(function() {
    setTimeout(function() {
        $('.flash').fadeOut();
    }, '2000');
});

但是,在 中sessions_controller.rb,如果发生登录错误,则会显示一条消息,其中将包含一个用于重置用户密码的链接 - 我不希望此链接淡出!

flash.now[:login_error] = "Invalid email/password combination.  
                           Have you #{ActionController::Base.helpers.link_to "forgotten your password?", '#'}".html_safe

有没有办法使flash类型的消息login_error免于代码中的代码application.js

编辑:

消息的 html login_error- 实际上它只是一个 css 类,所以应该很容易。

<div class="flash login_error">
  Invalid email/password combination.  
  Have you <a href="#">forgotten your password?</a>
</div>

解决方案:

techvineet的建议在用户未登录时禁用淡入淡出是一个很好的建议 - 我这样做是很广泛的,但我能想到的最简单的方法 - 在application.html.erb

<%= javascript_include_tag "application" unless current_user.nil?  %>

但是,arjan的答案仅针对我更明确的目标。

4

2 回答 2

1

您可以使用 jQuery 的not方法http://api.jquery.com/not/

//fadeout flash messages
$('.flash').not('.login_error').fadeIn(function() {
    setTimeout(function() {
        $('.flash').fadeOut();
    }, '2000');
});
于 2013-08-22T09:02:28.700 回答
1

只有在用户登录时才能启用淡入淡出功能

于 2013-08-22T09:09:27.580 回答