2016-04-16 12 views
0

Ich lerne, wie man E-Mails mit ActionMailer in Rails sendet, und ich habe Probleme, Parameter in meine OrderMailerPreview-Klasse zu übergeben. Ich muss eine order_id in die new_order-Methode übergeben, damit ich die entsprechende Bestellung nachschlagen kann. Hier ist der Code:Wie übergebe ich Parameter an eine MailerPreview-Klasse in Rails?

# Preview all emails at http://localhost:3000/rails/mailers/order_mailer 
class OrderMailerPreview < ActionMailer::Preview 

    # Preview this email at http://localhost:3000/rails/mailers/order_mailer/new_order 
    def new_order(order_id) 
    @order = Shoppe::Order.find(order_id) 
    OrderMailer.new_order(order) 
    end 

end 

Wie bekomme ich diese order_id in diese Methode?

Antwort

0

ActionMailer::Preview ist einfach gemacht, um Vorschauen mit gefälschten oder gesetzten Daten zu rendern und unterstützt Param-Weitergabe nicht, soweit ich weiß. Vielmehr verwendet es einfach die URL, um Dateien basierend auf der Klasse/Methode zu lokalisieren. Dies entspricht seiner beabsichtigten Verwendung als Entwicklungshilfe.

Wenn Sie dynamische Daten in der Mailer-Vorschau verwenden oder die Vorschau beispielsweise für Endbenutzer sichtbar machen möchten, sollten Sie stattdessen einen Controller erstellen, der die Mailer-Ansicht rendert.

class OrderMailerPreviewController < ApplicationController 
    # GET /mailers_previews/orders/:id 
    def show 
    @order = Order.find(params[:id]) 
    render "mailers/order", layout: nil 
    end 
end 
+0

Das ist großartig, danke! – Mark

Verwandte Themen