2016-03-24 5 views
0

Es ist ziemlich seltsames Verhalten. Ich habe zwei Vorlagen für eine Aktion in EmployeeMailer definiert.ActionMailer sendet beide Formate in einer einzigen E-Mail

employee_mailer/ 
    salary_slips.html.erb 
    salary_slips.text.erb 

und die folgenden ist der Code, ich verwende:

def salary_slips(salary_record) 
    mail.attachments['#{@record.employee.name}'] = { mime_type: 'application/pdf', content: @record.create_pdf_file.render } 
    mail to: @record.employee.official_email, subject: ['Salary Silp for', @date].join(' ') 
end 

Das Problem ist: Auf der Client-Seite, erhalte ich eine E-Mail, die mit .text.erb Teil beginnt und schließt auch .html.erb Teil Am Ende.

Die Entwicklung Protokolle sind als Fellows:

Rendered employee_mailer/salary_slips.html.erb (4.2ms) 
Rendered employee_mailer/salary_slips.text.erb (0.5ms) 
Rendered employee_mailer/salary_slips.text.erb (0.5ms) 

Ich denke, es ist nur .html.erb Teil machen sollte. Gibt es eine Möglichkeit, dass ich die Kontrolle übernehmen kann, und senden Sie nur .html.erb Teil in einer einzigen E-Mail.

Hinweis:

ich bereits format Block explizit verwendet habe, um die Formate in folgenden Weise angeben:

mail to: @record.employee.official_email, subject: ['Salary Slip for', @date].join(' ') do |format| 
    format.html { render 'salary_slips' } 
    format.text { render 'salary_slips' } 
end 

Antwort

0

Es ist seltsam, die Antwort zu schreiben, aber es aufgelöst, wenn ich mail.attachments nur attachments geändert. Hier sind die Linie, die ich geändert:

attachments['#{@record.employee.name}'] = { mime_type: 'application/pdf', content: @record.create_pdf_file.render } 

Jetzt ist es nur HTML-Teil zu senden, und nicht der Klartextteil auf einen einzigen Empfänger.

0
class UserMailer < ApplicationMailer 
    default from: '[email protected]' 

    def welcome_email(user) 
     @user = user 
     @url = 'http://example.com/login' 
     mail(to: @user.email, 
     subject: 'Welcome to My Awesome Site') do |format| 
     format.html { render 'another_template' } 
     format.text { render text: 'Render text' } 
    end 
end 

Ende

können Sie reagieren Format auswählen. Weitere Details http://guides.rubyonrails.org/action_mailer_basics.html

+0

Ich habe gerade meine Frage bearbeitet. Ich habe versucht, was du gesagt hast, aber auch nicht geholfen. –

+0

Vorlage = wahr? "Welcome_photographer": "welcome" Mail (: to => "E-Mail", : subject => "Welcome to ...", : template_name => template) versuchen, diese –

+0

in diesem Fall, dass Sie Vorlage auswählen können was du rendern willst –

Verwandte Themen