简体   繁体   English

选中多个复选框时将数组保存在数据库中

[英]Save array in DB when checked more than one checkbox

I have a problem greatest!!我有一个最大的问题!! I guess that really want Array, look my console when I checked just one:我想那真的很想要 Array,当我只检查一个时,看看我的控制台:

{"value_solve"=>["", "", "333", ""], "contract_number"=>["33"]}
-----
  SQL (317.5ms)  UPDATE "authorizations" SET "value_solve" = '', "situation" = 2 WHERE "authorizations"."contract_number" = ?  [["contract_number", "33"]]

After, when I checked just one, the first:之后,当我只检查一个时,第一个:

{"value_solve"=>["111", "", "", ""], "contract_number"=>["11"]}
-----
  SQL (317.5ms)  UPDATE "authorizations" SET "value_solve" =  '111 ', "situation" = 2 WHERE "authorizations"."contract_number" = ?  [["contract_number", "11"]]

And, for last, when I just more then one:而且,最后,当我不止一个时:

{"contract_number"=>["11", "44"], "value_solve"=>["111", "", "", "444"]}
-----
  SQL (297.7ms)  UPDATE "authorizations" SET "value_solve" = '111', "situation" = 2 WHERE "authorizations"."contract_number" = ?  [["contract_number", "11"]]
  SQL (121.9ms)  UPDATE "authorizations" SET "value_solve" = '', "situation" = 2 WHERE "authorizations"."contract_number" = ?  [["contract_number", "44"]]

And this is my controller:这是我的控制器:

@selected_ids = params[:authorization][:contract_number]
  @authorizations = Authorization.where("contract_number in (?)", @selected_ids)
  auth_params = params[:authorization]
  auth_params[:contract_number].zip(auth_params[:value_solve]).each do |contract_number, value_solve|
      Authorization.where(contract_number: contract_number).update_all(value_solve: value_solve, situation: 2)
  end

Just save the first value on DB, how I can save more then one value?只需将第一个值保存在 DB 上,如何保存多个值? Thanks!谢谢!

As I understood, you want the contract_number with id 44 to be “associated” with value_solve == "444" .据我了解,您希望将 id 为44contract_numbervalue_solve == "444" “关联value_solve == "444" If this is correct, you should remove blanks from your value_solve array:如果这是正确的,您应该从value_solve数组中删除空白:

auth_params[:contract_number].zip(auth_params[:value_solve].reject(&:blank?))...

Now 44 is being updated with the second element of value_solve , which is apparently an empty string.现在44正在使用value_solve的第二个元素进行value_solve ,这显然是一个空字符串。

See Array#zip for more details.有关更多详细信息,请参阅Array#zip

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM