簡體   English   中英

選中多個復選框時將數組保存在數據庫中

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

我有一個最大的問題!! 我想那真的很想要 Array,當我只檢查一個時,看看我的控制台:

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

之后,當我只檢查一個時,第一個:

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

而且,最后,當我不止一個時:

{"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"]]

這是我的控制器:

@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

只需將第一個值保存在 DB 上,如何保存多個值? 謝謝!

據我了解,您希望將 id 為44contract_numbervalue_solve == "444" “關聯value_solve == "444" 如果這是正確的,您應該從value_solve數組中刪除空白:

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

現在44正在使用value_solve的第二個元素進行value_solve ,這顯然是一個空字符串。

有關更多詳細信息,請參閱Array#zip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM