我想发布一个JSON对象数组,但我总是得到一个422 Unprocessable Entity响应。
这是我的控制器操作:Rails 4使用JSON数组的强参数
def create
@myusers = params[:user]
@myusers.each do
User.create(user_params)
end
def user_params
params.permit(:name,:address)
end
里,有了如下图所示HTTP调用在一起时,@myuser
阵列看起来像这样
@myuser =[{"name"=>"name11", "address"=>"addr1"}, {"name"=>"name22", "address"=>"addr2"}, {"name"=>"name33", "address"=>"addr132"}, {"name"=>"name4", "address"=>"addr4"}]
这是HTTP JSON身体
{"user":[{
"name" : "name11",
"address":"addr1"
},
{
"name" : "name22",
"address":"addr2"
},
{
"name" : "name33",
"address":"addr132"
},
{
"name" : "name4",
"address":"addr4"
}
]}
和我添加了Accept/Content-Type : application/json
标题。 日志文件显示此
Started POST "/api/customer/" for 127.0.0.1 at 2015-11-02 18:45:09 +0100
Processing by Api::UserController#create as JSON
Parameters: {"user"=>[{"name"=>"name11", "address"=>"addr1"}, {"name"=>"name22", "address"=>"addr2"}, {"name"=>"name33", "address"=>"addr132"}, {"name"=>"name4", "address"=>"addr4"}]}
Unpermitted parameters: customer, format
(0.4ms) BEGIN
(0.3ms) ROLLBACK
Unpermitted parameters: customer, format
(0.3ms) BEGIN
(0.3ms) ROLLBACK
Unpermitted parameters: customer, format
(0.2ms) BEGIN
(0.6ms) ROLLBACK
Unpermitted parameters: customer, format
(0.3ms) BEGIN
(0.4ms) ROLLBACK
Unpermitted parameters: customer, format
(0.3ms) BEGIN
(0.4ms) ROLLBACK
Completed 422 Unprocessable Entity in 62ms (Views: 0.6ms | ActiveRecord: 7.0ms)
每个单个对象的是ApplicationControllerParameter
所以应该是可以直接调用每个条目的user_params
行动?还是我错了?
在此先感谢您的帮助。
解决方案:
我觉得有š一些可能性,该代码可以做多一点很好,但,这是现在的工作对我来说:
def user_params
params.permit(user: [:name,:address])
end
def create
user_params[:user].each do |u|
User.create(u)
end
end
'客户'和'格式'参数来自哪里? –
我认为客户参数是主要的JSON键,然后是哈希数组,我总是因为我不知道的原因获得未经许可的格式参数 – theDrifter