我有多个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'答案 0 :(得分:1)
您不需要拆分。
Ruby作用域接受数组:
@billings = Billing.where(id: billings_ids)
答案 1 :(得分:0)
JSON.parse(billing_ids).each {| bill | bill}解决了我的问题