2017-03-06 4 views
0

Auf einem Auftrag Mailer, um die Bestell-ID zu finden, habe ich order_id verwendet, aber Schienen geben einen Fehler zurück, wenn ich params das gleiche benutze.Schienen finden Bestell-ID auf Mailer

Wie finde ich die Objekt-ID auf einem Mailer?

def order_confirmation(order) 
    order = Order.find(order_id) 
    @user = order.buyer_id 
    mail(to: @user.email, subject: 'Confirmação da Compra', &:html) 
    end 
+0

Wenn die 'Reihenfolge', die Sie übergeben (Instanz), bereits eine 'Reihenfolge' (Klasse) ist, dann hat es keinen Sinn, sie wieder zu "finden". Da Sie das Ergebnis dem zuweisen, was auch immer Sie haben, wird es für immer verloren gehen. Versuchen Sie, die Zeile 'order = Order.find (order_id)' komplett zu entfernen. – Patru

+0

Btw: Wahrscheinlich wollen Sie eine Instanzvariable Ihres Mailers nicht zuordnen. Selbst wenn 'order' eine' Order '' buyer_id' wäre, wäre das wahrscheinlich eine 'FixNum' und würde' # email' überhaupt nicht verstehen. Wenn der Benutzer von der "Bestellung" genommen werden soll, würde dies wahrscheinlich durch "order.buyer" (ohne die "ID") erfolgen. – Patru

Antwort

0

Sie sind in einer Instanz von order als Parameter übergeben, aber Sie nicht order_id geben oder auf andere Weise versuchen, es zu leiten, bevor Sie es benutzen.

Vielleicht sollten Sie versuchen, zu ersetzen

order = Order.find(order_id) 

mit

order = Order.find(order.id) 
0

Wie MarsAtomic erwähnt Sie mit "Ordnung"

def order_confirmation(order) # order contains the order itself 
    order = Order.find(order_id) #order_id is not specified 
    @user = order.buyer_id 
    mail(to: @user.email, subject: 'Confirmação da Compra', &:html) 
end 

Sie eine ganze Ordnung sind vorbei wollen die ID senden der Reihenfolge, die Sie so erreichen können:

In dieser Zeile enthält "Bestellung" bereits den Bestelldatensatz. Wenn Sie die ID (order.id) möchten, wenn Sie die BUYER_ID (order.buyer_id) möchten, wenn Sie die order_id (order.order_id):

def order_confirmation(order) 

empfehle ich sonst um etwas umbenennen (ich habe "order_identification"), weil Sie die Reihenfolge als Parameter übergeben und den gleichen Parameter innerhalb verwenden würden, würde dies überschreiben.

Verwandte Themen