Ruby on rails Rails 4 Api用户测试后失败

Ruby on rails Rails 4 Api用户测试后失败,ruby-on-rails,curl,rails-api,Ruby On Rails,Curl,Rails Api,我正在用Rails4.2API构建一个博客(用于角度前端)。我正在使用Desive(我知道是过度杀戮)添加用户,我的控制器测试通过了所有测试。当我尝试curlpost请求或尝试从Angular应用程序创建用户时,我得到一个406不可接受的状态代码 以下是我的创建控制器方法: def create user = User.new(user_params) if user.save render json: user, status: 201 else

我正在用Rails4.2API构建一个博客(用于角度前端)。我正在使用Desive(我知道是过度杀戮)添加用户,我的控制器测试通过了所有测试。当我尝试curlpost请求或尝试从Angular应用程序创建用户时,我得到一个406不可接受的状态代码

以下是我的创建控制器方法:

def create
    user = User.new(user_params)
    if user.save
        render json: user, status: 201
    else
        render json: { errors: user.errors }, status: 422
    end
end

private
def user_params
    params.require(:user).permit(:email, :password, :password_confirmation)
end
我能够毫无问题地从rails控制台创建用户

下面是我一直在尝试的curl命令:

curl -i -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{"email":"person@mail.com","password":"12345678","password_confirmation":"12345678"}' http://api.myapi.dev/users
我也有这个资源:

api_users POST   /users(.:format)                            api/users#create {:subdomain=>"api"}
我可以更新一个用户,并从curl执行任何其他操作,没有问题,我只是看不到这里的问题。非常感谢您的帮助。

根据,
406
回复如下:

根据请求中发送的accept标头,由请求标识的资源只能生成具有不可接受内容特征的响应实体

因此,当您使用cURL时,不需要发送
-H'Accept:application/json'-H'Content-type:application/json
,Rails将自动为您呈现json结果。因为您在控制器中只指定了
format.json

Rails希望您以以下方式发送数据:

{ "users": { "email", "person@mail.com" }, ... }

当您使用cURL命令点击服务器时,不发送
用户

谢谢,但那没用。删除其他POST调用的标题也不起作用。“我想我需要它们。”男爵816我已经编辑了我的答案。请检查一下。谢谢。我现在拿到了。是的,它需要{“用户”:{…}。我想我还需要在ApplicationController中添加designeController.response_to:json。它似乎仍然需要标题。如果你认为,我的答案是有效的,并且帮助了你,你可以接受它。