POST请求Rails 4 API的空params

时间:2014-03-17 20:58:57

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

我刚刚开始在Rails中编码,以便创建一个我已经碰壁的API。我正在尝试使用POST请求创建用户。这是我的用户控制器,它是使用scaffold命令创建的:

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并且一直失败,因为显然params总是为空。要测试我在Chrome上使用Postman - REST客户端的电话,我点击的网址是http://localhost:3000/users。我不确定我做错了什么。与表单和http相同的设置工作正常。

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

  1. {"用户" {"名称":"测试"}}
  2. {{"名称":"测试"}}

1 个答案:

答案 0 :(得分: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