我在Rails日志中注意到以下类型的条目:
Parameters: {"notes"=>"test", "name"=>"AAAA", "city"=>"city", "country"=>"country", "label"=>{"name"=>"AAAA", "city"=>"city", "country"=>"country", "notes"=>"test"}}
Unpermitted parameter: label
我已经编写了两个不同的客户端,它们将JSON发送到在Apache上运行的Rails API应用程序。一个是Angular / Dart,另一个是Cocoa Swift for MacOS。两者都只发送JSON的第一部分(即,最多为"标签" =>)。当我不发送任何JSON数据时,我甚至会在选择所有请求中看到它(例如,{"标签" => {}})。除警告外,额外数据不会引起任何问题。有关如何摆脱重复的JSON的任何想法?我知道如何摆脱警告。
构建请求的我的Swift代码:
let url = domain + rest
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
我没有添加" .json"到请求结束。
rake routes:
labels GET /labels(.:format) labels#index
POST /labels(.:format) labels#create
label GET /labels/:id(.:format) labels#show
PATCH /labels/:id(.:format) labels#update
PUT /labels/:id(.:format) labels#update
DELETE /labels/:id(.:format) labels#destroy
我的一个控制员:
class LabelsController < ApplicationController
def create
@label = Label.new(label_params)
if @label.save
render :json => @label
else
render json: @label.errors, status: :unprocessable_entity
end
end
...
private
def label_params
params.permit(:name, :city, :country, :notes)
end
end
答案 0 :(得分:0)
这是一个rails强参数错误。您需要告诉控制器您希望收到标签参数。
你的控制器里有这样的东西:
def person_params
params.require(:foo).permit(:label)
end
如果您使用控制器代码发表评论,我可以为您提供更具体的答案。