我有这个ajax调用,它发送一个JSON -
$.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'
});
当我尝试将其保存到数据库时,需要使用rails 4的强参数将其列入白名单。
这是对StrongParamter函数的调用 -
DailyWorkUpdate.new(daily_work_update_params)
强参数方法 -
private
def daily_work_update_params
params.require(:save_daily).permit(:attr1)
end
这会在浏览器中抛出错误,表示 - 未定义的方法`permit'对于#ARRAY
这是发送给控制器的JSON -
{"save_daily"=>[{"attr1"=>"AGNE_WI_UCMS"}]}
我已经被困在这里很久了。任何帮助将不胜感激。
答案 0 :(得分:0)
请尝试这样
您的JSON应该是这样的
{"daily_work_update"=>{"attr1"=>"AGNE_WI_UCMS"}}
def daily_work_update_params
params.require(:daily_work_update).permit(:attr1)
end
答案 1 :(得分:0)
因此,将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
请随时改进此答案。它也会对我有所帮助。但就目前而言,对于那些坚持这个问题的人来说,这是最好的工作。