Rails使用carrierwave gem发送电子邮件附件

时间:2014-10-19 14:28:20

标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave email-attachments

我正在尝试允许用户以邮件形式上传文件并发送附件而无需将其保存到服务器上。我正在使用rails 3,sqlite3和carrierwave。我以为我已经正确设置了所有内容,但我收到了NoMethodError: undefined method ascii_only?'为零:NilClass`。我做错了什么。

这是我的控制器动作:

def submit_eng

@request = Request.find(params[:id])
@email = params[:email]
@message = @email[:message]
@request = @request.eng_status(@request)
@subject = @email[:subject]
@additional_emails = @email[:recipient]
attachment = params[:attachment]
respond_to do |format|
  RequestMailer.submit_additional(@request, @message, @additional_emails, @subject, attachment).deliver if @additional_emails != ""

  @request.update_attributes(params[:request])
  format.html { redirect_to home_url, alert: "SIR has been submitted to engineering.  Please push up the revision level and resubmit if you make any changes." }
  format.json { render json: @requests }
end

这是邮件程序中的submit_additional方法:

  def submit_additional(request, message, additionalemails, subject, attachment)
    @request = request
    @message = message
    @emails = additionalemails
    @subject = subject
    to = []
    to << @emails
    attachment[attachment.original_filename] = attachment.read()
    mail to: to, subject: 'SIR '+@request.request_number.to_s+' notification'+'  '+@subject, template_name: 'eng_notify'
  end

最后,这是用户填写的表单:

<%= form_tag(:action => 'submit_eng', :multipart => true, :id => @request.id) %>

<p><label for="email_subject">Additional Subject Notes</label>
<%= text_field 'email', 'subject' %></p>
<p><label for="email_recipient">Additional Recipients</label>
<%= text_field 'email', 'recipient' %></p>
<p><label for="email_attachment">Attachments</label></p>
<%= file_field_tag 'attachment' %>
<p><label for="email_message"></label><br/>
<%= text_area 'email', 'message', value: render('submit_eng.text.erb'), class: "span6" %></p>
<%= form_tag %>

错误本身就像这样指向邮件程序方法中的'attachments []'行:

NoMethodError in RequestsController#submit_eng

undefined method `original_filename' for nil:NilClass

Application Trace
app/mailers/request_mailer.rb:11:in `submit_additional'
app/controllers/requests_controller.rb:138:in `block in submit_eng'
app/controllers/requests_controller.rb:137:in `submit_eng'
Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"R7h2RwuF0NYgoqfnm0k7/qNghcngXBNxznVt8sZGEH0=",
 "email"=>{"subject"=>"",
 "recipient"=>"asdf@gmail.com",
 "message"=>"All,
\r\n\r\nA new SIR has been created by asdf with the following details:\r\n\r\nSIR #: 5\r\nRequester: sabrams\r\nRegional Sales Manager: sabrams\r\nQuote Number: \r\nOrder Number: \r\nCustomer: \r\nCustomer Location: \r\nProduct Line: EMW\r\nInquiry Creation Date: 2014-10-08\r\nStatus: In Engineering\r\n\r\nGeneral Description: asdf\r\nAdditional Comments: \r\n\r\n\r\nPlease log onto the Engineering Database and add engineering lead time,
 hours,
 and any other relevant information,
 then submit the SIR to manufacturing.\r\n\r\nPlease contact asdf with any questions or comments."},
 "attachment"=>"test.jpg",
 "id"=>"5",
 "multipart"=>"true"}

0 个答案:

没有答案