如下 我用两个表创建了一个关联。
我在控制台添加的数据是:
Deal.create(items: "items1", shop_id:1, customer_ids: "uuid")
这是成功的。
但是当我尝试使用邮递员进行测试时
{"shop_id": 1, "items": "items2", "customer_ids": "uuid"}
新数据客户为null
我的控制器:
def create
@deal = Deal.new(deal_params)
respond_to do |format|
if @deal.save
format.json { render :show, status: :created }
else
format.json { render json: @deal.errors, status: :unprocessable_entity }
end
end
end
def deal_params
params.require(:deal).permit(:items, :shop_id, :customer_ids)
end
我的路线:
post 'deals', to: 'deals#create'
未发生日志错误。
我的情况有什么问题?
更新
我直接在控制器上尝试相同的数据
@deal = Deal.new({"shop_id": 1, "items": "items2", "customer_ids": "uuid"})
它成功了......
所以我认为问题出在我的deal_params函数
上我尝试了教程
params.require(:deal).permit(:items, :shop_id, :customer_ids => [])
但仍然没有好处
答案 0 :(得分:1)
因为您在允许其他人之前放置params.require(:deal)
仅在:deal
下使用参数。所以输入数据必须是
{"deal": {"shop_id": 1, "items": "items2", "customer_ids": "uuid"}}
或者您可以尝试直接允许其他值,如
params.permit(:items, :shop_id, :customer_ids => [])
答案 1 :(得分:0)
{"deal" => {"shop_id" => 1, "items" => "items2", "customer_ids" => "uuid"}}
控制器中的私有操作需要deal
,因此您需要将数据作为哈希值发送到deal
的包装器
params.require(:deal).permit(:items, :shop_id, :customer_ids)
答案 2 :(得分:0)
试试这个:
params.require(:deal).permit(:items, :shop_id, customer_ids: [])
你在做什么样的关系?有很多变化?有很多?有一个吗?