【发布时间】:2021-04-16 17:50:43
【问题描述】:
所以我在我拥有的“charge”方法上传递了一个 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,效果很好
【问题讨论】:
-
您的 JSON 没有
transaction节点作为transaction_params所需的包装器 -
你应该使用
if transaction.save而不是.valid?,因为后者并不能确保记录被实际保存。
标签: ruby-on-rails json ruby api