Ruby on Rails:我无法创建新用户

牧野正成

当我使用$ curl -X POST '{"user": {"name": "hogehoge", "email": "[email protected]", "icon_url": "hogehoge", "location": "hogehgoe", "password": "hogehoge"}}' localhost:3000/v1/users我的应用程序目录发送到终端以创建新用户时,出现错误。

{
  "status": 400,
  "error": "Bad Request",
  "exception": "#<ActionController::ParameterMissing: param is missing or the value is empty: user>",
  ・・・
  ・・・
  ・・・
}

在服务器日志

Started POST "/v1/users" for 127.0.0.1 at 2018-12-11 16:55:56 +0900
Processing by V1::UsersController#create as JSON
  Parameters: {"name"=>"hogehoge", "email"=>"[email protected]", "icon_url"=>"hogehoge", "location"=>"hogehoge", "password"=>"[FILTERED]"}
Completed 400 Bad Request in 1ms



ActionController::ParameterMissing (param is missing or the value is empty: user):

app/controllers/v1/users_controller.rb:52:in `user_params'
app/controllers/v1/users_controller.rb:20:in `create'

我认为 user_params 对正确的参数感到满意,但事实并非如此。

这是我的 user_controller.rb

module V1
  class UsersController < ApiController
    before_action :set_user, only: [:show, :update, :destroy]
    skip_before_action :authenticate_user_from_token!, only: [:show, :index, :create]



    # POST /users
    def create
      @user = User.new(user_params)

      if @user.save
        render json: @user, serializer: V1::UserSerializer
      else
        render json: @user.errors, status: :unprocessable_entity
      end
    end


    private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    # Only allow a trusted parameter "white list" through.
    def user_params
      params.require(:user).permit(:name, :email, :location, :icon_url, :password)
      p params
    end
  end
end

为什么 HTTP 向我发送了 400 错误的状态代码?


正如你所说,我将这个 JSON 参数发送到终端localhost:3000/v1/users

{
 "user": 
    {
    "name": "hogehoge",
    "email": "[email protected]",
    "icon_url": "hogehoge",
    "location": "hogehoge",
    "password": "hogehoge"
    }
}   

但是现在 HTTP 状态向我发送了 500 个内部服务器错误。这是一个新的错误代码。

Started POST "/v1/users" for 127.0.0.1 at 2018-12-11 17:33:50 +0900
Processing by V1::UsersController#create as JSON
  Parameters: {"user"=>{"name"=>"hogehoge", "email"=>"[email protected]", "icon_url"=>"hogehoge", "location"=>"hogehoge", "password"=>"[FILTERED]"}}
<ActionController::Parameters {"user"=><ActionController::Parameters {"name"=>"hogehoge", "email"=>"[email protected]", "icon_url"=>"hogehoge", "location"=>"hogehoge", "password"=>"hogehoge"} permitted: false>, "format"=>:json, "controller"=>"v1/users", "action"=>"create"} permitted: false>
Completed 500 Internal Server Error in 34ms (ActiveRecord: 2.0ms)



ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError):

app/controllers/v1/users_controller.rb:20:in `create'
像素地球

看起来您在 #user_params 中留下了调试代码,因此它不会返回正确的对象:

# Only allow a trusted parameter "white list" through.
def user_params
  params.require(:user).permit(:name, :email, :location, :icon_url, :password)
  p params
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ruby on rails 更新用户角色

来自分类Dev

如何使用AWS Cognito Ruby SDK注册新用户?

来自分类Dev

新用户尝试安装Ruby Gem(引导程序)

来自分类Dev

创建新用户

来自分类Dev

为什么我的Flask应用程序无法使用Python Social Auth创建新用户?

来自分类Dev

对于新用户,如何将该$ PATH设置为ruby?

来自分类Dev

对于新用户,如何将该$ PATH设置为ruby?

来自分类Dev

Rails 4:无法通过登录为用户创建会话,尽管该会话是在创建新用户时创建的

来自分类Dev

触发创建新用户

来自分类Dev

无法在Umbraco 7.1.6中创建新用户

来自分类Dev

无法在Win 8.1上创建新用户

来自分类Dev

无法在Umbraco 7.1.6中创建新用户

来自分类Dev

流星-确认登录后创建的新用户无法识别

来自分类Dev

无法为新用户创建默认桌面 18.4.03

来自分类Dev

无法添加新用户

来自分类Dev

无法添加新用户

来自分类Dev

无法登录新用户

来自分类Dev

无法登录新用户

来自分类Dev

为什么我无法在 Firebase 上注册新用户?

来自分类Dev

Ruby on Rails“可以找到ID =创建的用户”

来自分类Dev

Oracle 19c-无法与我在SQL开发人员中创建的新用户连接

来自分类Dev

无法在Chef中创建用户(ruby错误)

来自分类Dev

Docker MySQL:创建新用户

来自分类常见问题

创建新用户时ActiveModel :: ForbiddenAttributesError

来自分类Dev

MAMP并创建新用户和MySQL

来自分类Dev

使用Gerrit UI创建新用户

来自分类Dev

SQLPlus-创建新用户

来自分类Dev

创建新用户后设置

来自分类Dev

为新用户创建文件