2016-08-05 25 views
0

Ich versuche zu lernen, wie man Rails Mailer verwendet.Rails 4 - Mailer kann keine Vorlage finden

Ich habe einen Mailer-Ordner erstellt, in dem sich ein Ordner namens user_mailer.rb befindet. Es verfügt über:

class UserMailer < ActionMailer::Base 

    layout 'transactional_mailer' 

    def user_invite 

    mail(
     :subject => "You've been invited to join a research project team", 
     :to => '[email protected]', 
     :from => '[email protected]' 
    ) 
    end 
end 

In meinem Layout für transactional_mailer.html.erb, ich habe:

<!DOCTYPE html> 
<%= yield %> 

<style> 

body { 
    margin:0; 
    padding:0 
    } 

</style> 

dann in meinen Ansichten/Users/user_invite.html.erb

Hallo,

Wenn ich spare all dies und versuchen, es in meiner Konsole, durch Schreiben:

UserMailer.user_invite.deliver_now 

Ich bekomme einen Fehler, der sagt:

Ich weiß nicht, was diese Fehlermeldung bedeutet oder wie ich dieses Problem lösen. Kann jemand sehen, was ich falsch gemacht habe?

Ich habe auch versucht, einen Ordner in meinem View-Verzeichnis namens 'user_mailer'. In diesem Ordner habe ich versucht, eine Datei namens user_invite.html.erb hinzuzufügen - aber es funktioniert auch nicht.

Antwort

0

Problem ist hier:

Sie haben Ihre Ansicht user_invite.html.erb in views/user_mailer/user_invite.html.erb nicht in views/users/user_invite.html.erb

setzen, wenn Sie Ihr Mailer es manuell entfernen erstellt und von der Konsole

$ rails g mailer user user_invite 

Dann versuchen Dort gibt es automatisch ein neues Def namens user_invite und Ansicht im Ordner user_mailer.

Ich hoffe, es funktioniert jetzt

+0

Nein, das war mein zweiter Versuch (oben beschrieben). Es funktioniert auch nicht. Ich bekomme die gleiche Fehlermeldung wie zuvor – Mel

+0

Auch - ich kann nicht Ihren Vorschlag, einen Generator zu verwenden, weil ich diesen Fehler bekomme: Der Name 'Benutzer' ist entweder bereits in Ihrer Anwendung verwendet oder von Ruby on Rails reserviert. Bitte wählen Sie eine Alternative und führen Sie diesen Generator erneut aus. – Mel

+0

Was ist das Ergebnis, als Sie die erste Lösung von @Pradeep Sapkota ausprobiert haben? Beispiel: 'Setzen Sie die user_invite.html.erb in views/user_mailter/user_invite.html.erb?' –

0

versuchen, das Layout aus Ihrer Anwendung Mailer zu definieren.

class ApplicationMailer < ActionMailer::Base 
    default from: 'Example <[email protected]>' 
    layout 'transactional_mailer' #app/views/layouts/transactional_mailer.html.erb 
end