0

尝试在 Rails 3 中通过电子邮件发送回形针附件。

发票型号:

class Invoice < ActiveRecord::Base

has_attached_file :attachment,
:url => "http://server/app/attachments/:id/:style/:basename.:extension",
:path => ":rails_root/public/attachments/:id/:style/:basename.:extension"
validates_attachment_presence :attachment
validates_attachment_size :attachment, :less_than => 5.megabytes

end

account_mailer:

  def email_approver(invoice)
    @subject          = 'Invoice Approval Request'
    @body["invoice"]  = invoice
    #attachment  "application/octet-stream" do |a|
          #a.body = File.read(invoice.attachment.to_file.path)
          #a.filename = invoice.attachment_file_name
      #end
    @recipients = [invoice.approver_email, invoice.alternate_approver_email].compact
    @from             = "ADMIN"
    @sent_on          = Time.now
    @headers          = {}    
 end

错误:

NoMethodError (undefined method `filename=' for #<Mail::Part:0x00000002566dd0>):

有任何想法吗?谢谢!

4

2 回答 2

0

你有没有尝试过这样的事情

attachments[invoice.attachment_file_name] = File.read(invoice.attachment.to_file.path)

?

于 2013-01-25T14:23:04.220 回答
0

这是一个老问题,但这是我的工作解决方案:

attachments[mymodel.attachment.filename] = File.read(mymodel.attachment.path)
于 2016-01-26T09:26:05.107 回答