【发布时间】:2016-07-26 12:04:18
【问题描述】:
我有一条由 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 消息。这部分看起来像这样:
#flash_messages
-flash.each do |key, value|
= content_tag(:div, value, class: "flash alert alert-#{key}")
我想在 2 秒后使用 jquery 删除 flash 消息。我尝试的是:
$(".alert").fadeTo(2000, 500).slideUp(500, function(){
$(".alert").alert('close');
});
然而,它没有找到 .alert 类,因为它是在页面加载后生成的。这个问题的解决方法是什么:?谢谢!
【问题讨论】:
-
您可以在
destroy.js.erb文件中编写Jquery代码。然后它将起作用。您需要在$('#flash_messages').html("行之后添加jQuery 代码。你试过了吗? -
成功了。将其添加为答案,以便我可以将其标记为已接受。谢谢!
-
还有其他方法可以执行您的代码。就像在 Ajax 完成时执行代码一样,来自
success回调。在这种情况下,您不需要将 JS 放入 destroy.js.erb 中。但无论哪种方式,它都会起作用。
标签: javascript jquery ruby-on-rails ajax flash-message