Отправить электронное письмо с именем вложения action Mailer Ruby on Rails - PullRequest
1 голос
/ 06 января 2020

У меня есть несколько параметров из ха 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...