首页 > 解决方案 > 解析请求参数时出错。- 导轨 API

问题描述

所以我在我拥有的“收费”方法上传递了一个 post 方法,但我不断收到 400 个错误请求。

这是路线和输入 json:

POST http://localhost:3000/users/:user_id/accounts/:account_id/credit_card/:credit_card_id/charge'
Content-Type: application/json

{
"created": "8526798985", 
"amount": "2000",
"currency": "usd",
}

这是收费方式:

  def charge
    transaction = Transaction.new(transaction_params)  
    transaction.credit_card_id = @credit_card.id
    if transaction.valid?
      transaction.save
      new_transaction = { id: transaction.id, created: transaction.created, status: transaction.status, amount: transaction.amount.to_i, currency: transaction.currency, credit_card_id: transaction.credit_card_id }
      render json: new_transaction
    else
      error_json = { error: "Invalid inputs" }
      render json: error_json, status: 400
    end
  end

这也是 transaction_params 方法

  def transaction_params
  params.require(:transaction).permit(:created, :amount, :currency)
  end

错误

Error occurred while parsing request parameters.
Contents:

{
"created": "8526798985",
"amount": "2000",
"currency": "usd",
}

我在这里想念什么?我做了另一个api,效果很好

标签: ruby-on-railsjsonrubyapi

解决方案


您的强大参数期望:

{
  "transaction: {
    {
      "created": "8526798985", 
      "amount": "2000",
      "currency": "usd",
    }
  }
}

但是您正在提供它:

{
  "created": "8526798985", 
  "amount": "2000",
  "currency": "usd",
}

一种解决方案是更改请求正文在您的前端放在一起的方式,或者您可以更新您transaction_params的阅读:

def transaction_params
  params.permit(:created, :amount, :currency)
end

推荐阅读