Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Rails 4和Carrierwave发送带有附件的电子邮件_Ruby On Rails - Fatal编程技术网

Ruby on rails 使用Rails 4和Carrierwave发送带有附件的电子邮件

Ruby on rails 使用Rails 4和Carrierwave发送带有附件的电子邮件,ruby-on-rails,Ruby On Rails,我有一个Rails 4应用程序,它使用carrierwave处理文件上传。它安装正确,文件存储正确。但是,我无法使用Activemailer将其作为附件发送。这是我正在使用的邮件: def trigger_email(send_mail, contact, user) @mailer = send_mail @email = contact.email @user = User.find(user) attachments[@mailer.attachment.o

我有一个Rails 4应用程序,它使用carrierwave处理文件上传。它安装正确,文件存储正确。但是,我无法使用Activemailer将其作为附件发送。这是我正在使用的邮件:

def trigger_email(send_mail, contact, user)
    @mailer = send_mail
    @email = contact.email
    @user = User.find(user)
    attachments[@mailer.attachment.original_filename] = File.read(@mailer.attachment.current_path)
    mail(to: @email, subject: @mailer.subject, from: @user.email)
end

我缺少什么?

我找到了一个适合我的解决方案(rails 4.2、ruby 2.2.0、development env、本地存储)

记住添加两种电子邮件类型(.text.erb和.html.erb)


希望这能解决你的问题

像这样的东西在我的
邮件中
很有魅力

  all_documents.each do |document|
    filename = document.pdf_file.file.filename
    attachments[filename] = document.pdf_file.read
    puts "attached!"
  end

查找
file.filename
以及
read
属性(位于
您的carrierwave上传器型号中)
在我的情况下,我的上传器的列名是
pdf\u file

您如何存储附件?它们在文件系统中吗?@jvnill是的,文件存储在文件系统的public/uploads/…您没有收到任何错误吗?还是你没有收到任何电子邮件?@jvnill我看不到任何错误。邮件发送得很好,没有任何附件。没有线索。如果尚未设置,请尝试将
config.action\u mailer.raise\u delivery\u errors
设置为true
  all_documents.each do |document|
    filename = document.pdf_file.file.filename
    attachments[filename] = document.pdf_file.read
    puts "attached!"
  end