【问题标题】:Empty params on POST request to a Rails 4 API对 Rails 4 API 的 POST 请求的空参数
【发布时间】:2014-03-17 20:58:56
【问题描述】:

我刚开始在 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 Client 的调用,我点击的 URL 是 http://localhost:3000/users 。我不确定我做错了什么。与表单和 http 相同的设置可以正常工作。

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

  1. {"user":{"name":"test"}}
  2. {{"name":"test"}}

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2020-06-26
      相关资源
      最近更新 更多