У меня есть несколько параметров из ха sh, которые я хотел бы отправить по электронной почте. Для названия моего файла вложения (счет-фактура) мне нужно указать название моего магазина и информацию об этом счете-фактуре. Когда я запускаю тест, я получаю 9 электронных писем вместо 3 из-за моего .each, но я не знаю, как это сделать, может ли кто-нибудь помочь мне получить только 3 документа с именем и переменной магазина.
Вот мой контроллер:
if(params.dig('connection')!= nil)
#GET ALL MY DOCUMENTS
documents = params.dig('connection', 'subscriptions').each_with_object([]) { |x, arr| x['documents'].each { |d| arr << d['url'] } }.to_s
#GET THE NAME OF THE SHOP
shop = params.dig('connection','connector', 'name').to_s
#GET ALL THE INFORMATIONS
names = params.dig('connection', 'subscriptions').each_with_object([]) { |x, arr| x['documents'].each { |d| arr << d['name'] } }.to_s
full_name = JSON.parse(names)
full_name.each do |name| puts "CHAQUE NAME " + name
array_docs = JSON.parse(documents)
bearer_token = request.headers["Authorization"]
array_docs.each do |doc|
decoded_doc = URI.parse(URI.escape(doc)).to_s
tmp_file = Tempfile.new(['invoices', '.pdf'])
tmp_file.binmode
open(decoded_doc, "Authorization" => bearer_token) do |url_file|
tmp_file.write(url_file.read)
tmp_file.rewind
tmp_file.read
attached_file = tmp_file.path
attachment = Array.new
attachment = {filename: shop+".pdf", file: attached_file}
InvoiceMailer.send_invoice(attachment).deliver
end
end
end
end
Могу ли я сделать что-то вроде:
documents = params.dig('connection', 'subscriptions').each_with_object([]) { |x, arr| x['documents'].each { |d| arr << d['url'], |n| arr << n['name'] } }.to_s