Devise в настоящее время не обрабатывает ответы JSON - см. Проблему на github .Поэтому вам придется создать пользовательский session_controller для обработки вашего ответа.Взгляните на реализацию на github , чтобы получить представление.Я собрал несколько грубых псевдокодов, которые, надеюсь, помогут вам начать:
class Users::SessionsController < Devise::SessionsController
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
set_flash_message :notice, :signed_in
# Remove sign_in_and_redirect(resource_name, resource) and replace with the following, I think
sign_in(resource_name, resource)
respond_to do |format|
format.json { render :json => hash_of_things_to_return.to_json }
end
end
end
Затем в вашем файле rout.rb вам нужно будет указать новый контроллер - devise_for :users, :controllers => { :sessions => "users/sessions" }
Надеюсь, что этопомогает!