如何处理devise的authenticate_user! 用ajax电话?

我有一个表单:remote => true,这意味着它将通过ajax提交。

在控制器中,我有这样的代码:

before_filter: authenticate_user!, :only => [:create] 

因为我只允许确认的用户创建资源。

但是,当身份validation失败时,设计会引发一个

 Completed 401 Unauthorized 

并且不会呈现不显眼的javascript。

但我希望事情是这样的:

设计在flash中设置一些消息,并渲染我的.js.erb,然后我向用户显示flash。

怎么实现呢?

这很有趣但是将devise.rb http_authenticatable_on_xhr更改为false

 config.http_authenticatable_on_xhr = false 

为我做了诀窍……没有覆盖authenticate_user! 方法

注意:我还添加了:js到导航格式

 config.navigational_formats = [:"*/*", "*/*", :html, :js] 

你需要自己做authenticate_user! 动作,在此动作中,您可以获得所需的行为。

 def authenticate_user! unless current_user render 'my_js' end end