使用 rails 中的强参数将 JSON 参数列入白名单
White listing JSON parameters using Strong Parameters in rails
我有这个 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
这会在浏览器中抛出一个错误,上面写着-
#ARRAY
的未定义方法“允许”
这是发送给控制器的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
请随时改进此答案。它也会帮助我。但就目前而言,对于那些被这个问题困扰的人来说,这是最好的解决方法。
我有这个 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
这会在浏览器中抛出一个错误,上面写着- #ARRAY
的未定义方法“允许”这是发送给控制器的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
请随时改进此答案。它也会帮助我。但就目前而言,对于那些被这个问题困扰的人来说,这是最好的解决方法。