2016-07-15 4 views
7

Ich folge michael harlt Tutorial Schienen, aber ich bekomme diese FehlermeldungFehlende Vorlage Layouts/Mailer mit {: locale => [: en]: Formate => [: html],

Fehlende Vorlage Layouts/mailer mit {: locale => [: de],: formats => [: html],: variants => [],: handler => [: roh,: erb,: html,: builder,: ruby,: Kaffee,: jbuilder]}. Gesucht in: * "/ home/ubuntu/Arbeitsbereich/app/views"

wenn Kontoaktivierung Vorschau

Das ist mein user_mailer.rb

class UserMailer < ApplicationMailer 

    def account_activation(user) 
    @user = user 
    mail to: user.email, subject: "Account activation" 
    end 

    def password_reset 
    @greeting = "Hi" 

    mail to: "[email protected]" 
    end 
end 

und der Fehler unterstreicht die Zeile, die sagt

Ich habe versucht, Layout 'Mailer' in user_mailer.rb, aber es funktioniert nicht.

EDIT: Here is the screenshot of the error

The screenshot of my folders

+0

Sie müssen die tatsächlichen erb.html (oder jede andere Variante haben Sie vielleicht) hinzufügen – Leito

Antwort

2

Wenn Sie nicht bereits tun, müssen Sie einen Ordner in Aussicht genannt user_mailer und darin benötigen Sie eine Datei für jede dieser Methoden (account_activation.html.erb & password_reset.html .erb). Dies ist, wo die Vorlage Ihrer E-Mail sein wird.

+0

Ich habe sie, alle html.erb Dateien in Sichten. – helloworld

+0

Haben Sie einen GitHub-Link für dieses Projekt? oder ein Screenshot Ihres Mailer-Ordners und der Ansichten, in denen Sie diese Dateien abgelegt haben? –

+0

Ich benutze Bit-Bucket, aber ich kann es screenshot. – helloworld

0

Stellen Sie sicher, dass Sie die Datei haben app/mailers/application_mailer.rb Von Hartl Tutorial:

class ApplicationMailer < ActionMailer::Base 
default from: "[email protected]" 
layout 'mailer' 
end 
+0

Ich habe zu tun, dass die Datei mit allen user_mailers Vorlagen in Ansichten – helloworld

4

ich hatte das gleiche Problem, und es schien, für mich zu arbeiten, wenn ich aus dem Layout 'Mailer' Linie in application_mailer

zB

class ApplicationMailer < ActionMailer::Base 
    default from: '[email protected]' 
    # layout 'mailer' 
end 
+0

Wissen Sie, warum es funktioniert? – helloworld

+0

Irgendeine Idee, warum der Befehl 'rails generate' nicht die Layout-Dateien für uns erzeugte und für Michael Hartl? – jbk

5

Die Ausgabe kommentiert ist die nächste:

dieses Mailer Sie diesen Befehl verwenden erzeugen

$rails generate mailer UserMailer account_activation password_reset 

Senden zurück

create app/mailers/user_mailer.rb 
create app/mailers/application_mailer.rb 
invoke erb 
create app/views/user_mailer 
create app/views/layouts/mailer.text.erb 
create app/views/layouts/mailer.html.erb 
invoke test_unit 
create test/mailers/user_mailer_test.rb 
create test/mailers/previews/user_mailer_preview.rb 

durch eine seltsame Art und Weise app/views/layouts/mailer.html.erb Datei so nicht erzeugt wird, wenn Sie

Layout 'Mailer'

"

die Schienen Kern senden Sie diesen Fehler rufen Fehlende Vorlagenlayouts/Mailer "

können Sie dies auf 2 Arten auflösen.

Zuerst: Kommentieren oder löschen Sie Layout 'Mailer'.
Zweitens: Erstellen der Datei.

Andere Möglichkeiten wie 'Layout Mailer' sind schlechte Praktiken, weil diese Syntax keinen Sinn für Rails hat.

Wenn Sie die Datei erstellen, verwenden Sie den Code zu füllen

<!DOCTYPE html> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <style> 
     /* Email styles need to be inline */ 
    </style> 
    </head> 

    <body> 
    <%= yield %> 
    </body> 
</html> 
+0

Das Erstellen einer leeren Datei führte zu einer Ausnahme. Wenn Sie nur einen HTML-Kommentar erstellen, führt dies zu einer leeren HTML-Ansicht (Text funktionierte einwandfrei). Welchen Inhalt hatten Sie in der Datei? –

+0

Danke. Versuche es mit Backticks - 'um Text als Code zu markieren –

+0

ich mache es gerade! –

5

ich das gleiche Problem hatte und was beschlossen wird gewährleistet ich in .../app/views/layouts/ zwei Dateien hatte: mailer.html.erb und mailer.text.erb.

mailer.html.erb:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <style> 
     /* Email styles need to be inline */ 
    </style> 
    </head> 

    <body> 
    <%= yield %> 
    </body> 
</html> 

mailer.text.erb:

<%= yield %> 
+0

Was war der Inhalt dieser Dateien? –

+0

@TomHale, ich habe meine Antwort bearbeitet, um den Inhalt beider Dateien einzuschließen. –

+0

Ausgezeichnet, das ist die Lösung, mit der ich ging. Ich glaube, es ist das einzige, das generisch im Nur-Text-Fall funktioniert - danke! –

Verwandte Themen