我有一条由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类,因为它是在页面加载后生成的。解决这个问题的方法是什么:谢谢!
答案 0 :(得分:-1)
当实际的DOM(如<div class='alert'..
不存在)时,您的JS已加载到页面中。所以,绑定没有发生。解决这个问题的一种方法是,在文件呈现逻辑之后将JS代码放在 destory.js.erb 文件中。另一种方法是从特殊元素的Ajax调用的success
回调中执行JS代码。