Ruby on rails 在rails中使用强参数白名单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调用,它发送一个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'
      });
当我试图将其保存到数据库时,需要使用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)