I have a form with :remote => true which means it will be submitted through ajax.
In the controller, I have such code:
before_filter: authenticate_user!, :only => [:create]
For I only allow confirmed user to create resource.
However, when the authentication fails, devise will raise a
Completed 401 Unauthorized
and no unobtrusive javascript will be rendered.
But I hope things goes like this:
devise set some messages in flash, and render my .js.erb, then I show the flash to users.
How to achieve it?
It is quite funny but change in devise.rb http_authenticatable_on_xhr to false
config.http_authenticatable_on_xhr = false
did the trick for me... without overriding authenticate_user! method
note: I also added :js to navigational formats
config.navigational_formats = [:"*/*", "*/*", :html, :js]
You need do your own authenticate_user! action and in this action you can have the behaviour your want.
def authenticate_user!
unless current_user
render 'my_js'
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With