2014-11-08 7 views
8

In der Klasse den Namen der Aktion in einem after_action Filter bekommen unten, wie bekomme ich die aktuellen Aktionsnamen (das heißt email_confirmation, password_reset) in der Seite des after_action Rückruf add_mandril_headers?Wie für Action

class UserMailer < ActionMailer::Base 

    after_action :add_mandril_headers 

    def email_confirmation(user) 
    mail(..) 
    end 

    def password_reset(user) 
    mail(..) 
    end 

private 

    # how to get the action name? 
    def add_mandrill_headers 
    headers['X-MC-Tags'] = [mailer_name, action_name].join('_'); 
    end 
end 

Antwort

13

Es ergibt sich action_name gibt den aktuellen Mailer Aktion Name zurück. Ich versuchte es basierend auf der Tatsache, dass ActionController eine ähnliche Methode hat.

0

Danke @HarishShetty!

Wie Sie erwähnt haben, ist die action_name für alle Controller gut, da sie von ApplicationController geerbt wird.

Zum Beispiel wurde ich public_activity mit und wollte einige Vereinfachungen in meinen Controller:,

class SiteDetailsController < ApplicationController 

    after_action :track_activity, only: [:create, :update, :destroy] 

    # ... 

    private 

    def track_activity 
    @site_detail.create_activity action_name, owner: current_user 
    end 
end 
+0

Yep das ist, warum ich sagte 'ich es versucht, auf der Grundlage der Tatsache, dass Action eine ähnliche method.' hat –