Rails 5 - 如何为设计实现 ajax 闪现消息

Rails 5 - how to implement ajax flash message for devise

我正在使用 devise 制作一个 rails5 博客应用程序。在评论控制器中,我使用 "before_action :authenticate_user!" 检查用户是否存在。

因此,如果用户已登录,则会执行创建评论方法,并且服务器响应会通过 AJAX 发送回客户端。但是,如果用户未登录,则 "before_action :authenticate_user!" 检查会在响应中创建 401 身份验证错误(可以在浏览器日志中看到)。

我只想在评论框上方或页面某处显示即显消息,以便用户知道 he/she 无法在未登录的情况下输入评论。

我发现了很多类似的问题,但它们看起来很混乱,none 的解决方案对我有用。他们中的大多数人谈论更改设计配置(例如 config.http_authenticatable_on_xhr = false)或覆盖 authenticate_user 方法等。

有人可以解释一下是否可以向用户显示一条快速消息警告以登录以添加评论(ajax 呼叫)。我不想自动重定向 AJAX 个电话。

创建一个 flash 方法,然后在 jQuery 中捕获未经授权的错误并显示您的 flash 消息:

@flash = (content, type) ->
  content = "<div class='container'><div class=\"alert alert-#{type}\">#{content}</div></div>" if type?
  $('#flash').clearQueue().hide().html(content).fadeIn('slow').delay(3000).fadeOut('slow')

$(document).ajaxError (e, xhr, settings) ->
  flash("Unauthorized", "danger") if xhr.status == 401