Rails,删除通过 ajax 生成的闪现消息

Rails, remove flash message generated via ajax

我有一条由 ajax 响应生成的即显消息。 在我的控制器中我有:

def destroy
  flash[:danger] = "Successfuly destroyed"
  format.js
end 

调用 destroy.js.erb 文件

$('#flash_messages').html("<%= escape_javascript (render partial: 'layouts/flash_messages') %>");

呈现显示 flash 消息的部分内容。这部分看起来像这样:

#flash_messages
  -flash.each do |key, value|
    = content_tag(:div, value, class: "flash alert alert-#{key}")

我想使用 jquery 删除 2 秒后的闪现消息。我试过的是:

$(".alert").fadeTo(2000, 500).slideUp(500, function(){
  $(".alert").alert('close');
});

但是,它没有找到 .alert class,因为它是在页面加载后生成的。这个问题的解决方法是什么:?谢谢!

当实际 DOM 不存在时,您的 JS 已加载到页面中。所以,绑定没有发生。解决这个问题的一种方法是,将 JS 代码放在 destory.js.erb 文件中,在文件呈现逻辑之后。另一种方法是从 success 调用特定元素的 success 回调执行 JS 代码。