我需要在我的UserMailer中的大约15个动作邮件程序方法中使用名为@template_name的实例变量用于营销目的。我不想四处乱扔东西:
@template_name = __callee__
在我的所有方法中,或在视图中删除字符串,我想尽可能将其作为DRY。创建一个可以访问方法名称而不是本身的回调似乎很有挑战性,即无论它触发什么方法,都会返回“do_thing”。
before_action :do_thing
def do_thing
__callee__ # old way was __method__
end
非常欢迎任何建议!
答案 0 :(得分:1)
查看this帖子。
如果我理解正确,您可以简单地执行以下操作:
Rails> 4
before_action { @template_name = action_name }
Rails< 4
include AbstractController::Callbacks
before_action { @template_name = action_name }