2014-11-08 65 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