Rails 4 Api用户发布测试失败

时间:2015-06-19 16:28:29

标签: ruby-on-rails curl rails-api

我在Rails 4.2 API(用于Angular前端)中构建博客。我用设计添加用户(我知道的是矫枉过正),我的控制器测试通过了所有内容。当我尝试curl POST请求或尝试从我的Angular应用程序创建用户时,我得到406 Not Acceptable状态代码。

这是我的创建控制器方法:

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执行任何其他操作,我只是在这里看不到问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

根据W3406回复是:

  

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

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

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

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

当您使用cURL命令命中服务器时未发送users