【问题标题】:Rails 5 - how to implement ajax flash message for deviseRails 5 - 如何为设计实现 ajax flash 消息
【发布时间】:2017-01-20 07:24:57
【问题描述】:

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

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

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

我发现了许多类似的问题,但它们看起来非常令人困惑,并且没有一个解决方案对我有用。他们中的大多数人都在谈论更改设计配置(例如 config.http_authenticable_on_xhr = false)或覆盖 authenticate_user 方法等。

有人能解释一下是否可以向用户显示一个闪光消息警告以登录以添加评论(ajax 调用)。我不想自动重定向 AJAX 调用。

【问题讨论】:

    标签: ruby-on-rails ajax devise ruby-on-rails-5


    【解决方案1】:

    创建一个 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-31
      • 2018-04-05
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多