所以我試圖通過他們的 sale_id 過濾發票。發票上有很多資訊,我需要從陣列內的哈希中獲取 sale_id。我正在按此值過濾發票,但無法獲得正確的結果
我使用 搜索來自特定商店的發票invoices = store.invoices。這將回傳一個填充有哈希的陣列。這是我從一個哈希中得到的一部分:
rows: [{"name"=>"sale 1", "item_id"=>1289, "sale_id"=>1413, "single_amount"=>"5000.0", "amount"=>"5000.0", "quantity"=>1, "charges_amount"=>"0.0", "tax_amount"=>"0.0", "tax_rate_id"=>nil, "total_amount"=>"5000.0"}],
note: nil,
total: 0.5e4,
paid_total: 0.0,
我試過了:filtered = invoices.select { |i| i['sale_id'] == sale.id }但這只是回傳一個空陣列。我想也許我只需要達到更深的水平,所以我嘗試invoices.select{|i| i['rows'][sale_id] == 1413}了,但我再次得到一個空的結果。
我也試過rows = invoices.map(&:rows)了,這會給我一個嵌套陣列,其中包含來自所有不同發票的行的哈希值。但這對我沒有多大幫助,因為在找到匹配的發票后,我最終將需要單獨的發票 ID。我已經堅持了這么久,覺得我在這里錯過了一個基本的部分,并且希望得到一些見解。謝謝!
編輯:我能夠通過修改建議來實作這一點:invoices.select { |i| i['rows'][0]['sale_id'] == self.id }
uj5u.com熱心網友回復:
您需要獲取rows陣列中的第一項,然后選擇sale_id
invoices.select { |i| i['rows'][0]['sale_id'] == sale.id }
如果缺少某些鍵/值,您還可以使用dig來防止錯誤。
invoices.select { |i| i.dig('rows', 0, 'sale_id') == sale.id }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507445.html
下一篇:Rails陣列轉移到新的連接表
