2014-11-08 30 views
8

的after_action過濾器在下面的類動作的名稱,如何獲取當前動作名稱(即email_confirmationpassword_reset)在側after_action回調add_mandril_headers如何獲得在的ActionMailer

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 

回答

13

變成action_name返回當前郵件程序的動作名稱。我試過它基於ActionController有類似的方法這一事實。

0

謝謝@HarishShetty!

如上所述,action_name適用於所有控制器,因爲它從ApplicationController繼承。

例如,我使用public_activity,想在我的控制器簡化一些:

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

是的,這就是爲什麼我說,'我想它基於一個事實,即ActionController的也有類似的method.' – 2016-03-14 02:04:32