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 代码。
我有一条由 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 代码。