向 Rails 4 API 发送 POST 请求时参数为空

3

我刚开始使用Rails编写代码,以便创建API,但是已经遇到了问题。我正在尝试使用POST请求创建用户。以下是使用脚手架命令创建的用户控制器:

def create
@user = User.new(params[:user])

logger.info(@user.to_json)

if @user.save
 render json: @user, status: :created, location: @user

else
  render json: @user.errors, status: :unprocessable_entity
end

结束

用户模型只有一个验证validates :name, presence: true,但总是失败,因为参数似乎总是为空。我使用Chrome上的Postman-REST客户端测试调用,并且我正在访问的URL是http://localhost:3000/users。我不确定我做错了什么。与表单和HTTP相同的设置正常工作。

我尝试以不同方式格式化JSON对象,但没有任何效果。到目前为止,我已经使用了:

  1. {"user":{"name":"test"}}
  2. {{"name":"test"}}
1个回答

1
因为它不允许通过。Rails 4引入了“strong parameters”。您可以使用相邻的方法并调用它。
def create
  @user = User.new(user_params)

  logger.info(@user.to_json)

  if @user.save
    render json: @user, status: :created, location: @user
  else
    render json: @user.errors, status: :unprocessable_entity
  end
end

...
private
def user_params
  params.require(:user).permit(:field1, :field2)
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接