2014-09-30 12 views
6
class UserPreview < ActionMailer::Preview 
    # Accessible from http://localhost:3000/rails/mailers/notifier/welcome_email 
    def welcome_email 
    UserMailer.welcome_email(User.first) 
    end 
end 

Ich habe diese einfache Mailer-Vorschau mit Ruby on Rails 4.1.Welche Routen muss ich einrichten, um E-Mails mit Rails 4.1 ActionMailer :: Preview anzuzeigen?

Wenn ich kommentieren Sie, alle Routen in meiner routes.rb Datei und lassen nur das, arbeitet der Mailer Vorschau:

MyTestApp::Application.routes.draw do 

end 

So offensichtlich eine meiner Rechte ist eine vor den Standard Rails Gewöhnung für Mailer Vorschauen.

Was muss ich in die Routen rb-Datei eingeben?

Antwort

15

Ich weiß, das ist eine alte Frage, aber ich dachte, ich würde trotzdem eine Antwort posten.

Ich vermute, Sie haben eine Route ähnlich wie diese am Ende Ihrer routes.rb Datei:

match '/:controller(/:action(/:id))' 

Das ist eine ‚alle fangen‘ Route. Der Rails-Code fügt die Mailer-Preview-Routen an das Ende der Routen an, so dass sie aufgrund der Route "Catch all" nie erreicht werden.

Es klingt wie die 'alle fangen' Route kann in Rails 5.0 zurückgezogen werden? Es ist wahrscheinlich eine gute Idee, Ihre Routen zu überprüfen, so dass Sie kein "alles fangen" benötigen. Hier ist ein Link zu dem Problem, wo jemand erwähnt, die "alle fangen" wird irgendwann zurückgezogen: https://github.com/rails/rails/issues/15600

Also, hier ist die Lösung. Benutzung auf eigene Gefahr!

Fügen Sie die Mailer-Routen vor Ihrem 'alle fangen' ein.

Das wird Ihren Mailern ermöglichen zu arbeiten und Ihre 'alle fangen' wird weiter funktionieren. Nun, das ist eine vollständige hack, die nur verwendet werden sollte, bis Sie in der Lage sind, das Root-Problem zu beheben, das die Notwendigkeit für die "alle fangen" Route beseitigt.

Ich fand das folgende in der Problemliste für Schienen, die aussieht, wie angenommen worden ist und vereinigt worden ist. Ich bin mir nicht sicher, in welcher Version es ist, aber es sieht so aus, als hätten sie den Mailer-Vorschau-Code aktualisiert, um die Routen voranzustellen, anstatt sie anzuhängen.

https://github.com/rails/rails/pull/17896/files

Viel Glück!