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

时间:2016-07-26 12:04:18

标签: javascript jquery ruby-on-rails ajax flash-message

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

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

调用destroy.js.erb文件

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:-1)

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