我正在嘗試在我的 Rails 應用程式上使用 Postman 發帖,但我收到一個問題:
ActionController::ParameterMissing (param is missing or the value is empty: vendor
Did you mean? vendor_data
action
quote_type
controller):
這是我controller呼叫引數的檔案:
def create_vendor_params
params.require(:vendor).permit(
:vendor_id, :quote_type, :first_name, :last_name, :email, :phone_type, :phone, :request_type, :address1, :address_city, :address_state, :address_zip, :DOB
)
end
這是我從 Postman 發送的資料。現在我不確定是不是因為renter_data它嵌套在我的params permit:
{
"vendor_id": 2,
"quote_type": "renter",
"renter_data": {
"first_name":"Tony",
"last_name":"Stark",
"email":"tony@starkindustries",
"phone_type":"mobile",
"phone":"6504881234",
"request_type":"renter",
"address1":"123 Main Street",
"address_city":"Palo Alto",
"address_state":"CA",
"address_zip":"94301",
"DOB":"1990-07-22"
}
}
這個問題是因為里面的嵌套資料renter_data嗎?如果是,我該如何嵌套它?
編輯
當我發帖時,我在請求末尾看到一個空物件:
Processing by Api::V2::LeadController#create as */*
Parameters: {"vendor_id"=>2, "quote_type"=>"renter", "renter_data"=>{"first_name"=>"Tony", "last_name"=>"Stark", "email"=>"tony@starkindustries", "phone_type"=>"mobile", "phone"=>"6504881234", "request_type"=>"renter", "address1"=>"123 Main Street", "address_city"=>"Palo Alto", "address_state"=>"CA", "address_zip"=>"94301", "DOB"=>"1990-07-22"}, "vendor"=>{} <---HERE }
這是為什么?
uj5u.com熱心網友回復:
有兩個問題:首先,強引數期望輸入嵌套在vendor. 其次,強引數不期望嵌套renter_data散列。
要在查詢中解決此問題,請將請求資料的結構更改為:
{
"vendor": {
"vendor_id": 2,
"quote_type": "renter",
"first_name":"Tony",
"last_name":"Stark",
"email":"tony@starkindustries",
"phone_type":"mobile",
"phone":"6504881234",
"request_type":"renter",
"address1":"123 Main Street",
"address_city":"Palo Alto",
"address_state":"CA",
"address_zip":"94301",
"DOB":"1990-07-22"
}
}
如果您想保留嵌套renter_data哈希,那么您必須更改像 Paarth Agrawal 已經建議的強引數。但是你仍然需要將所有內容嵌套在vendor.
uj5u.com熱心網友回復:
這是 create_vender_params 函式中嵌套強引數的概念,您必須添加更多允許的引數
params.require(:vendor).permit(
:vendor_id, :quote_type, renter_Data: [:first_name, :last_name, :email, :phone_type, :phone, :request_type, :address1, :address_city, :address_state, :address_zip, :DOB])
uj5u.com熱心網友回復:
vendor_table 有一些欄位vendor_id, quote_type, first_name, last_name, email,phone_type,phone, request_type, address1,address_city,address_state, address_zip,DOB。
def create_vendor_params
params.require(:vendor).permit(
:vendor_id, :quote_type, :first_name, :last_name, :email,
:phone_type,:phone, :request_type, :address1, :address_city,
:address_state,:address_zip, :DOB)
end
"vendor": {
"vendor_id": 2,
"quote_type": "renter",
"first_name":"Tony",
"last_name":"Stark",
"email":"tony@starkindustries",
"phone_type":"mobile",
"phone":"6504881234",
"request_type":"renter",
"address1":"123 Main Street",
"address_city":"Palo Alto",
"address_state":"CA",
"address_zip":"94301",
"DOB":"1990-07-22"
}
def create
@vendor = Vendor.new(create_vendor_params)
if @vendor.save
render json: {'Success' }
else
render json: {error: @vendor.errors}
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484988.html
上一篇:如何在方法中傳遞引數列舉?
