遍历红宝石中的数组

时间:2020-01-16 22:15:56

标签: ruby-on-rails ruby iteration

我有多个ID的数组,如下所示。我想循环获取单个值。我在想这样的事情。

def letter(billing_ids)
 @billings = Billing.find(billings_ids.split(","))
 @billings.each do |bill|
  puts "#{bill}" 
 end
end

但我遇到错误 ActiveRecord :: RecordNotFound:找不到所有带有'id':([66,68])的账单(找到1个结果,但正在寻找2个结果)

ActiveRecord :: RecordNotFound:找不到带有'id'= [47]的发票

我从此查询中获取以下数组-

Office.all.each do |office|
  billing_ids=[] #initialize array
  office.issues.where("issues.amount > 0").each do |issue|
    billing_ids << issue.billings.where("billings.date < ?", Message.last.date).order(:date).last.id
  end
  puts (billing_ids)
end

[66, 68]
[47]

请帮助我弄清楚该怎么做。

更新

def letter(billing_ids)
 @billings = Billing.where(id: billings_ids.split(","))
 @billings.each do |bill|
  puts "#{bill}" 
 end
end

更新2:

def letter(billing_ids)
 puts "#{billing_ids}"
end

终端输出

 [66, 68]
 [47] 

更新3

使用byebug查明出了什么问题,这就是我这样做时可以找到的问题

@billings = Billing.where(id: billing_ids) 
@billings.each do |bill| 
 byebug 
 puts bill.id
end

MethodError异常:“ [66,68]”:字符串

的未定义方法'each'

2 个答案:

答案 0 :(得分:1)

您不需要拆分。
Ruby作用域接受数组:

 @billings = Billing.where(id: billings_ids)

答案 1 :(得分:0)

JSON.parse(billing_ids).each {| bill | bill}解决了我的问题