Ruby on rails 如何创建在AJAX表单返回错误后闪烁的消息?

Ruby on rails 如何创建在AJAX表单返回错误后闪烁的消息?,ruby-on-rails,ajax,ruby-on-rails-5,message,flash-message,Ruby On Rails,Ajax,Ruby On Rails 5,Message,Flash Message,我使用的是Rails 5。我想创建一条消息,在我提交AJAX表单并返回错误后,它会在我的页面上闪烁。我不使用推特引导,只考虑使用它,如果它不拧任何其他样式我已经有了。无论如何,在我看来,我有这个 <div id="error_explanation" class="alert alert-success"></div> displayError('#{error_msg}') 它调用了这个咖啡脚本 @displayError = (msg) -> ...

我使用的是Rails 5。我想创建一条消息,在我提交AJAX表单并返回错误后,它会在我的页面上闪烁。我不使用推特引导,只考虑使用它,如果它不拧任何其他样式我已经有了。无论如何,在我看来,我有这个

<div id="error_explanation" class="alert alert-success"></div>
displayError('#{error_msg}')
它调用了这个咖啡脚本

@displayError = (msg) ->
  ...

  $("#error_explanation").text(msg)

正如您所猜测的,现在,消息仅以纯文本显示。我希望它闪烁然后消失。我该怎么做呢?

根据你的咖啡剧本,以下是我的方法:

不熟悉CoffeeScript及其语法,所以这里是简单的JS代码。

setTimeout(函数(){
$('#visitLink').hide()
}, 2000);


这将使消息在2秒钟后消失。

如果您只是需要消息在设定的时间量后淡出,请将最后一行CoffeeScript更改为:

$("#error_explanation").text(msg).delay(3000).fadeOut()

如果您需要一些更复杂的东西(例如,悬停时不要淡出、堆叠通知、关闭按钮等),或者准备好样式-那么您可能希望使用JS库进行研究,例如。

这应该有助于您开始:

show_ajax_message = (msg, type) ->
  $("#flash-message").html "<div id='flash-#{type}'>#{msg}</div>"
  $("#flash-#{type}").delay(5000).slideUp 'slow'

$(document).ajaxComplete (event, request) ->
  msg = request.getResponseHeader("X-Message")
  type = request.getResponseHeader("X-Message-Type")
  show_ajax_message msg, type
show\u ajax\u message=(消息,类型)->
$(“#flash message”).html“#{msg}”
$(“#flash-#{type}”).delay(5000)。滑动“slow”
$(文档).ajaxComplete(事件、请求)->
msg=request.getResponseHeader(“X-Message”)
type=request.getResponseHeader(“X-Message-type”)
显示消息消息消息,键入

错误消息实际上在我的问题中包含的id为=“error\u explauration”的DIV中。即使用“#错误(解释)代替访问链接,代码也会使其立即消失,但典型的Flash通知会淡出,并且会有更多的样式,使消息对用户更加突出。我如何模拟所有这些?如果你想添加动画和所有这些,你有两个选择。使用jQuery“可见”和“隐藏”切换类,并使用CSS转换应用动画。或者,使用jQuery。虽然我会推荐CSS,因为它对用户更容易,性能也更高。至于为什么它会立即消失,我需要更多的代码来了解原因。它会立即消失,因为“$('#…').hide()”会立即生效。这看起来很有希望。这是宝石吗?或者我只是在复制JS/CSS文件?@Dave:要么复制到您的项目中,要么使用存储库自述文件中提供的CDN链接。有一个
toastr-rails
gem,但它看起来有一段时间没有更新。我以前使用过gem
unobtrisive\u flash
,它很容易实现。