Ruby on rails 在rails中使用强参数白名单JSON参数
我有一个ajax调用,它发送一个JSON-Ruby on rails 在rails中使用强参数白名单JSON参数,ruby-on-rails,json,strong-parameters,whitelist,Ruby On Rails,Json,Strong Parameters,Whitelist,我有一个ajax调用,它发送一个JSON- $.ajax({ data: JSON_main_data, url: '/daily_work_updates', type: "POST", success: function(data){ if (data ==true) alert("Data saved successfully"); else
$.ajax({
data: JSON_main_data,
url: '/daily_work_updates',
type: "POST",
success: function(data){
if (data ==true)
alert("Data saved successfully");
else
alert("Data not saved successfully");
},
dataType: 'JSON',
contentType : 'application/json'
});
当我试图将其保存到数据库时,需要使用Rails4的强参数将其列入白名单
这是对strongParameter函数的调用-
DailyWorkUpdate.new(daily_work_update_params)
强参数法-
private
def daily_work_update_params
params.require(:save_daily).permit(:attr1)
end
这会在浏览器中引发一个错误,该错误表示-
#数组的未定义方法“permit”
这是发送到控制器的JSON-
{"save_daily"=>[{"attr1"=>"AGNE_WI_UCMS"}]}
我被困在这里很久了。任何帮助都将不胜感激。请像这样尝试
您的JSON应该是这样的
{"daily_work_update"=>{"attr1"=>"AGNE_WI_UCMS"}}
def daily_work_update_params
params.require(:daily_work_update).permit(:attr1)
end
因此,将JSON参数白名单化似乎有很多问题。据我所知,这需要向rails开发人员报告。 不管怎么说,我有一个解决方案,可以解决同样的问题,但没有列出参数(这是一个糟糕的编码标准,但却是我找到的唯一解决方案) 我的控制器-
def create
(0..params[:length].to_i - 1).each do |i|
@saved = false
@saved=DailyWorkUpdate.WriteRecordDailyWorkUpdate(params[:save_daily][i])
end
end
因此,我在模型中直接使用SQL查询插入值-
def self.WriteRecordDailyWorkUpdate(save_daily)
@connection = ActiveRecord::Base.establish_connection
DailyWorkUpdate.connection.execute("INSERT INTO `daily_work_update`(`DATE`)
VALUES ('"+save_daily["DATE"]')
return true
end
请随时改进这个答案。这对我也有帮助。但就目前而言,这是解决这些问题的最佳方法。这是缺少响应参数或值为空的响应:每日工作更新。我的JSON的名称是-JSON\u main\u data。我试过了。它也不起作用。@AlexJose您是否尝试过上述代码,或者仍然遇到相同的问题?我尝试了您响应的代码。它无法识别值-:每日工作更新。因此它说-param缺失或empty@AlexJose,你能在这里粘贴一行错误吗?我想看到您的这个错误完整的“未定义的方法'permit'for#”,我的JSON是一个带有has散列的数组。因此,它不能“允许”问题中提到的强参数函数中的值。在发送JSON之前,我应该以某种方式解析它吗?请尝试以下
params[:save_daily][0]。permit(:attr1)