通过API在Devise中进行用户注册

Sha*_*did 9 api rest json ruby-on-rails devise

我最近开始使用rails 5开发REST API.我正在尝试通过API调用执行User粗体操作.我为用户设置了一个基本的设计.

在我的路线中我有这个:

Rails.application.routes.draw do
  devise_for :users, :controllers => {sessions: 'sessions', registrations: 'registrations'}
end
Run Code Online (Sandbox Code Playgroud)

我创建了两个独立的控制器sessions_controller和registrations_controller来覆盖设计方法并使其接受JSON格式.

class RegistrationsController < Devise::RegistrationsController
    respond_to :json
end
Run Code Online (Sandbox Code Playgroud)

class SessionsController < Devise::SessionsController
    respond_to :json
end
Run Code Online (Sandbox Code Playgroud)

我正在尝试注册传递以下数据的用户:

{  
    user: {
        email: me@gmail.com,
        password: password,
        password_confirmation: password
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到状态200.但在我的rails服务器中我收到以下错误:

Started POST "/users" for 23.233.9.94 at 2016-12-22 08:22:11 +0000
Processing by RegistrationsController#create as */*
  Parameters: {"Payload: {  \r\n    user: {\r\n        email: me@gmail.com,\r\n        password: password,\r\n        password_confirmation: password\r\n    }\r\n}"=>"[FILTERED]"}
   (0.2ms)  begin transaction
   (0.1ms)  rollback transaction
Completed 200 OK in 5ms (Views: 0.2ms | ActiveRecord: 0.3ms)
Run Code Online (Sandbox Code Playgroud)

所以我基本上有2个问题.如何格式化JSON以便我的设计控制器识别它并将其保存到数据库中.我的第二个问题是如何传递CSRF令牌.一个小例子真的可以帮到我.提前致谢.

Ani*_*ari 5

您的JSON无效。您需要将字符串用双引号引起来

{  
    "user": {
        "email": "me@gmail.com",
        "password": "password",
        "password_confirmation": "password"
    }
}
Run Code Online (Sandbox Code Playgroud)